declare module '@blockly/plugin-typed-variable-modal' {
  import Blockly from 'blockly';
  export interface TypedVarModalMessages {
    /** default 'Create Typed Variable' */
    TYPED_VAR_MODAL_TITLE: string;
    /** default "Variable Name:" */
    TYPED_VAR_MODAL_VARIABLE_NAME_LABEL: string;
    /** default 'Variable Types' */
    TYPED_VAR_MODAL_TYPES_LABEL: string;
    /** default "Ok" */
    TYPED_VAR_MODAL_CONFIRM_BUTTON: string;
    /** default 'Cancel' */
    TYPED_VAR_MODAL_CANCEL_BUTTON: string;
    /** default 'Name is not valid. Please choose a different name.', */
    TYPED_VAR_MODAL_INVALID_NAME: string;
  }
  export class TypedVariableModal {
    /**
     * Constructor for creating a typed variable modal.
     * @param {!Blockly.WorkspaceSvg} workspace The workspace that the modal will
     *     be registered on.
     * @param {string} btnCallbackName The name used to register the button
     *     callback.
     * @param {Array<Array<string>>} types An array holding arrays with the
     *     display name as the first value and the type as the second.
     *     Ex: [['Penguin', 'PENGUIN'], ['Giraffe', 'GIRAFFE']].
     * @param {TypedVarModalMessages} optMessages The messages for a typed
     *     variable modal.
     */
    constructor(
      workspace: Blockly.WorkspaceSvg,
      btnCallbackName: string,
      types: [string, string][],
      optMessages?: Partial<TypedVarModalMessages>
    );
    init();
    setLocale(message: TypedVarModalMessages);
    dispose();
  }
}
