/// <reference path="../../pxtlib.d.ts" />
import * as Blockly from "blockly";
import { FieldCustom } from "./field_utils";
export declare abstract class FieldBase<U> extends Blockly.Field implements FieldCustom {
    static CHECKMARK_OVERHANG: number;
    isFieldCustom_: true;
    SERIALIZABLE: boolean;
    options: U;
    protected valueText: string;
    protected loaded: boolean;
    protected workspace: Blockly.Workspace;
    constructor(text: string, params: U, validator?: Blockly.FieldValidator);
    protected abstract onInit(): void;
    protected abstract onDispose(): void;
    protected abstract onValueChanged(newValue: string): string;
    static pendingInit: FieldBase<any>[];
    static pendingTimeout: any;
    static enqueueInit(field: FieldBase<any>): void;
    static flushInitQueue(): void;
    init(): void;
    dispose(): void;
    getValue(): string;
    doValueUpdate_(newValue: string): void;
    getDisplayText_(): string;
    onLoadedIntoWorkspace(): void;
    /**
     * Returns a human-readable description of the field's current value.
     */
    getFieldDescription(): string;
    protected getAnchorDimensions(): any;
    protected isInitialized(): boolean;
    protected getBlockData(): string;
    protected setBlockData(value: string): void;
    protected getSiblingBlock(inputName: string, useGrandparent?: boolean): Blockly.Block;
    protected getSiblingField(fieldName: string, useGrandparent?: boolean): Blockly.Field<any>;
}
