import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { default as default_2 } from 'quill/modules/toolbar';
import { default as default_3 } from 'quill';
import { DefineComponent } from 'vue';
import { PublicProps } from 'vue';

declare const _default: DefineComponent<TextEditorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
blur: (editor: default_3) => any;
focus: (editor: default_3) => any;
"update:model-value": (value: string) => any;
}, string, PublicProps, Readonly<TextEditorProps> & Readonly<{
onBlur?: ((editor: default_3) => any) | undefined;
onFocus?: ((editor: default_3) => any) | undefined;
"onUpdate:model-value"?: ((value: string) => any) | undefined;
}>, {
placeholder: string;
controls: TextEditorControls;
modelValue: string;
handlers: TextEditorControlHandlerMap;
}, {}, {}, {}, string, ComponentProvideOptions, false, {
editorRef: HTMLDivElement;
}, any>;
export default _default;

declare interface FieldProps {
    /**
     * Adds spacing under the field that is consistent whether hint/error text is displayed.
     */
    addBottomSpace?: boolean;
    /**
     * Error text to display. Replaces `hintText` (if provided) & adds error styling.
     */
    errorText?: string;
    /**
     * Displays text below the input; hidden when the isReadOnly prop is truthy.
     */
    hintText?: string;
    /**
     * ID for the Label and Input; must be unique
     */
    id?: string;
    /**
     * ID for the error text element; useful for aria-errormessage
     */
    errorId?: string;
    /**
     * Whether it's a readonly field.
     */
    isReadOnly?: boolean;
    /**
     * Whether the field is required.
     */
    isRequired?: boolean;
    /**
     * Label to render above the input.
     */
    label?: string;
    /**
     * Show "(optional)" to the right of the label text
     */
    showOptionalInLabel?: boolean;
    /**
     * Indicates whether the label should be visually hidden (screen reader only).
     */
    isLabelSrOnly?: boolean;
    /**
     * Indicates wheter the field is a fieldset or not
     */
    fieldset?: boolean;
    /**
     * Indicates whether the field is disabled.
     */
    isDisabled?: boolean;
    /**
     * Indicates whether the field is disabled.
     *
     * @deprecated Use `isDisabled` instead.
     */
    disabled?: boolean;
}

declare type IconName = (typeof iconNames)[number];

/**
 * To add a new icon, follow these steps:
 *
 * https://github.com/LeafLink/stash/blob/main/CONTRIBUTING.md#adding-a-new-icon
 */
declare const iconNames: readonly ["action-dots", "activity", "alert-bell", "archive", "arrow-down", "arrow-left", "arrow-right", "arrow-up", "badge-discount", "badge-seller-elite", "badge-seller-power", "badge-seller-verified", "bank", "book-customer", "building-office", "bulk-add", "calendar-reschedule", "calendar", "camera", "caret-down", "caret-up", "change-log", "check", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "circle-check", "circle-close", "circle-dollar", "circle-empty", "circle-info", "circle-partial", "circle-percent", "circle-question-mark", "circle-slash", "circle-status", "circle-warning", "clipboard-checkmark", "clipboard-inventory", "close", "cloud-share", "combine", "compass", "contact", "contract", "copy", "credit-card", "credit-profile", "dashboard", "document-accept", "document-invoice", "document-recieved", "document-sent", "document-view", "document", "dolly", "download", "edit", "ellipsis", "envelope-open", "envelope", "equals", "export", "face-id", "face", "featured-no-check", "figma", "file-csv", "file", "filter-funnel", "filter-line", "fingerprint", "flag", "folder", "folder-bar-graph", "folder-orders", "font-bold", "font-clear-format", "font-italic", "font-underline", "gear", "github", "globe", "graph-bar-chart", "graph-line-chart", "graph-pie-chart", "hazard", "hazard-outline", "headset-agent", "headset-mic", "heart-filled", "heart-outline", "help-question-mark", "hide", "history", "home", "image", "import", "keyboard-return", "tier-1", "tier-2", "tier-3", "license-approved", "license-certificate", "lightbulb", "link-add", "link-unlink", "link", "list-bulleted", "list-items", "list-numbered", "loading-big", "loading-empty", "loading-small", "location", "lock-unlock", "lock", "logo-facebook", "logo-instagram", "logo-linkedin", "logo-ll", "logo-metrc", "logo-plaid", "logo-x", "logo-youtube", "logout", "medical", "megaphone-sound", "megaphone", "menu", "message-dispute", "message-reply", "message", "minus", "mj-leaf", "money", "note-add", "note", "open-in-new", "paperclip", "paper-plane", "performance", "phone", "plus", "preview", "print", "product-menu-manage", "product-menu-search", "product-menu", "queue-add", "queue", "recent", "refresh", "register", "reorder", "reply", "report-download", "sample", "save", "scale-law", "scale-weight", "search", "seed-cycle", "share", "shop-bag-browse", "shop-bag-reorder", "shop-bag", "shop-basket", "shop-cart-add", "shop-cart", "show", "sign-dollar", "sign-percent", "sort", "split", "star-filled", "star-outline", "start", "storefront", "submit", "swap-horizontal", "swap-vertical", "tag-star", "tag", "tag-leaf", "test-results", "ticket-star", "ticket", "tool-dropper", "tool-wrench", "transfer", "trashcan", "truck", "upload", "user-add", "user-admin", "user-check", "user-group", "user", "view-card", "view-detailed", "view-list", "warehouse", "working"];

declare const TEXT_EDITOR_ALLOWED_CONTROLS: readonly ["bold", "italic", "underline", "link", "divider", "list"];

export declare type TextEditorAllowedControlName = (typeof TEXT_EDITOR_ALLOWED_CONTROLS)[number];

export declare type TextEditorControl = (TextEditorAllowedControlName | TextEditorControlObject)[];

export declare type TextEditorControlHandler = (this: default_2, value: any) => void;

export declare type TextEditorControlHandlerMap = {
    [key in TextEditorAllowedControlName]?: TextEditorControlHandler;
};

export declare type TextEditorControlMatrix = (TextEditorAllowedControlName | TextEditorControlObject)[][];

export declare type TextEditorControlObject = {
    [key in TextEditorAllowedControlName]?: unknown;
};

/**
 * Toolbar Controls used to configure the Editor options.
 * @see https://quilljs.com/docs/modules/toolbar/#controls
 *
 * @example ['bold', 'italic', 'underline', { list: 'bullet' }]
 *
 * @example Grouping: [
 *  ['bold', 'italic', 'underline', 'clean'],
 *  [{ list: 'ordered' }, { list: 'bullet' }],
 *  ['link', 'divider'],
 * ]
 */
export declare type TextEditorControls = TextEditorControl | TextEditorControlMatrix;

export declare interface TextEditorFormat {
    name: TextEditorAllowedControlName;
    icon?: IconName;
    value?: string;
}

export declare type TextEditorFormatGroups = TextEditorFormat[][];

/**
 * The text editor icon map property can be either an IconName or an object with a key being some TextEditorAllowedControlName values
 * @see https://quilljs.com/docs/modules/toolbar/#container for more options and compare with the TextEditorAllowedControlName
 */
export declare type TextEditorIconMap = {
    [key in TextEditorAllowedControlName]: IconName | {
        [x: string]: IconName;
    };
};

export declare interface TextEditorProps extends FieldProps {
    /**
     * The model value.
     */
    modelValue?: string;
    /**
     * Placeholder text to display when the editor is empty.
     */
    placeholder?: string;
    /**
     * A set of custom toolbar controls to pass to the Quill editor.
     */
    controls?: TextEditorControls;
    /**
     * An object map of custom handlers to pass to the Quill editor.
     */
    handlers?: TextEditorControlHandlerMap;
}

export { }
