import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

declare type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};

declare type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};

declare type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};

declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<IntegrationIconProps>, {
id: () => string;
size: string;
title: string;
staticPath: string;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<IntegrationIconProps>, {
id: () => string;
size: string;
title: string;
staticPath: string;
}>>> & Readonly<{}>, {
title: string;
id: string;
size: "small" | "standard" | "dense" | "large";
staticPath: string;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;

declare type IconSize = `${IconSizes}`;

declare enum IconSizes {
    Standard = "standard",
    Dense = "dense",
    Small = "small",
    Large = "large"
}

export declare type IntegrationIconName = (typeof integrationIconNames)[number];

export declare const integrationIconNames: readonly ["batchbud", "biotrack", "blaze", "canix", "cannveya", "cova", "distru", "dutchie", "dynamics365", "flourish", "flowhub", "growflow", "maxq", "meadow", "metrc", "quickbooks", "roshi", "sage-intacct", "salesforce", "stashstock", "xero", "zohobooks"];

export declare interface IntegrationIconProps {
    id?: string;
    /**
     * The filename of the icon that should be displayed
     */
    name: IntegrationIconName;
    /**
     * Accessible, short-text description for the icon. Not rendered as part of the graphic, but
     * browsers usually display it as a tooltip and screen readers use this.
     */
    title?: string;
    /**
     * The size of the icon
     * Options: large (32x32px), default (24x24px), dense (20x20px), small (14x14px).
     */
    size?: IconSize;
    /**
     * Icon's custom static path. It'll default to either the staticPath defined on the library installation or '/static' if none are provided.
     */
    staticPath?: string;
}

export { }
