import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { StashColorNames } from '@leaflink/stash-types/colors';
import { StashColorNamesWithShades } from '@leaflink/stash-types/colors';

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<IllustrationProps>, {
id: string;
title: string;
size: number;
type: IllustrationType;
fillColor: string;
strokeColor: string;
staticPath: string;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<IllustrationProps>, {
id: string;
title: string;
size: number;
type: IllustrationType;
fillColor: string;
strokeColor: string;
staticPath: string;
}>>> & Readonly<{}>, {
type: "spot" | "vignette" | "scene";
title: string;
id: string;
size: number;
staticPath: string;
fillColor: StashColorNames;
strokeColor: "ice-700" | "blue-50" | "blue-100" | "blue-200" | "blue-300" | "blue-400" | "blue-500" | "blue-600" | "blue-700" | "blue-800" | "blue-900" | "blue-950" | "red-50" | "red-100" | "red-200" | "red-300" | "red-400" | "red-500" | "red-600" | "red-700" | "red-800" | "red-900" | "red-950" | "green-50" | "green-100" | "green-200" | "green-300" | "green-400" | "green-500" | "green-600" | "green-700" | "green-800" | "green-900" | "green-950" | "royal-50" | "royal-100" | "royal-200" | "royal-300" | "royal-400" | "royal-500" | "royal-600" | "royal-700" | "royal-800" | "royal-900" | "royal-950" | "purple-50" | "purple-100" | "purple-200" | "purple-300" | "purple-400" | "purple-500" | "purple-600" | "purple-700" | "purple-800" | "purple-900" | "purple-950" | "ice-50" | "ice-100" | "ice-200" | "ice-300" | "ice-400" | "ice-500" | "ice-600" | "ice-800" | "ice-900" | "ice-950" | "orange-50" | "orange-100" | "orange-200" | "orange-300" | "orange-400" | "orange-500" | "orange-600" | "orange-700" | "orange-800" | "orange-900" | "orange-950" | "seafoam-50" | "seafoam-100" | "seafoam-200" | "seafoam-300" | "seafoam-400" | "seafoam-500" | "seafoam-600" | "seafoam-700" | "seafoam-800" | "seafoam-900" | "seafoam-950" | "teal-50" | "teal-100" | "teal-200" | "teal-300" | "teal-400" | "teal-500" | "teal-600" | "teal-700" | "teal-800" | "teal-900" | "teal-950" | "yellow-50" | "yellow-100" | "yellow-200" | "yellow-300" | "yellow-400" | "yellow-500" | "yellow-600" | "yellow-700" | "yellow-800" | "yellow-900" | "yellow-950" | "white" | "black";
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;

export declare interface IllustrationProps {
    id?: string;
    /**
     * The filename of the icon that should be displayed
     */
    name: SpotNames | VignetteNames;
    /**
     * 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 in pixels of the illustration.  This number will be used for width and height
     */
    size?: number;
    /**
     * Type of the illustration
     */
    type?: IllustrationTypes;
    /**
     * The fill color for the illustration.  This component will use the 400 shade of the color
     * per design's request.  Defaults to teal.
     */
    fillColor?: StashColorNames;
    /**
     * The color theme for the illustration.  This component will use the standard 500 shade of the color.
     * Defaults to purple
     */
    strokeColor?: StashColorNamesWithShades | 'white' | 'black';
    /**
     * Illustration's custom static path. It'll default to either the staticPath defined on the library installation or '/static' if none are provided.
     */
    staticPath?: string;
}

/**
 * Types of illustrations that map to the subfolder under ./assets/illustrations/<type>
 */
export declare enum IllustrationType {
    Spot = "spot",
    Vignette = "vignette",
    Scene = "scene"
}

export declare type IllustrationTypes = `${IllustrationType}`;

/**
 * Enum to strongly map between a friendly name and file name of the illustration
 */
export declare enum SpotName {
    Approved = "approved",
    Avatar = "avatar",
    Barcode = "barcode",
    Calendar = "calendar",
    Cartridge = "cartridge",
    Celebrate = "celebrate",
    ChatBubble = "chat-bubble",
    CheckBox = "check-box",
    CheckCircle = "check-circle",
    Click = "click",
    Cocktail = "cocktail",
    Confirmation = "confirmation",
    Connnect = "connnect",
    Cookie = "cookie",
    CreditCard = "credit-card",
    Crm = "crm",
    Cultivation = "cultivation",
    Data = "data",
    DeliveryCompleted = "delivery-completed",
    Delivery = "delivery",
    DigitalPayments = "digital-payments",
    Discover = "discover",
    Diversity = "diversity",
    Drink = "drink",
    Dolly = "dolly",
    EasyReconciliations = "easy-reconciliations",
    Efficiency = "efficiency",
    Error = "error",
    ExtendDate = "extend-date",
    FinancialGrowth = "financial-growth",
    FinancialInstitution = "financial-institution",
    Focus = "focus",
    FulfillmentIssues = "fulfillment-issues",
    Growth = "growth",
    Handshake = "handshake",
    Hierarchy = "hierarchy",
    Home = "home",
    Laptop = "laptop",
    Licenses = "licenses",
    LightBulb = "light-bulb",
    LightbulbError = "lightbulb-error",
    LineChart = "line-chart",
    Link = "link",
    LocationPin = "location-pin",
    Lock = "lock",
    Messaging = "messaging",
    Messages = "messages",
    Microchip = "microchip",
    MissingData = "missing-data",
    MoneyTransfer = "money-transfer",
    Money = "money",
    NoInventoryAccess = "no-inventory-access",
    NoInventory = "no-inventory",
    NoPromote = "no-promote",
    PackageReceived = "package-received",
    Package = "package",
    PaymentProcessing = "payment-processing",
    Phone = "phone",
    PieChart = "pie-chart",
    ProductCycle = "product-cycle",
    Puzzle = "puzzle",
    Receipt = "receipt",
    Retail = "retail",
    SearchingDocument = "searching-document",
    ShoppingBasket = "shopping-basket",
    Shopping = "shopping",
    Sign = "sign",
    Smile = "smile",
    Speed = "speed",
    Time = "time",
    Tools = "tools",
    Truck = "truck",
    User = "user",
    Warehouse = "warehouse",
    Warning = "warning",
    XCircle = "x-circle"
}

export declare type SpotNames = `${SpotName}`;

/**
 * String array of all illustration names
 */
export declare const spotNames: SpotName[];

export declare enum VignetteName {
    Api = "api",
    Bank = "bank",
    Basket = "basket",
    BrandMenu = "brand-menu",
    Calendar = "calendar",
    Dashboard = "dashboard",
    Deals = "deals",
    DocumentSearch = "document-search",
    Edit = "edit",
    EmptyTray = "empty-tray",
    Graph = "graph",
    Integrations = "integrations",
    LightBulb = "light-bulb",
    Map = "map",
    Megaphone = "megaphone",
    Messages = "messages",
    MoneyBank = "money-bank",
    NoFiltersResult = "no-filters-result",
    Notifications = "notifications",
    OrdersEmpty = "orders-empty",
    Payments = "payments",
    PieChart = "pie-chart",
    ProductCards = "product-cards",
    ProductDetails = "product-details",
    ProductDisplay = "product-display",
    Search = "search",
    SearchStorefront = "search-storefront",
    Store = "store",
    Todo = "todo",
    Truck = "truck",
    Users = "users",
    Warehouse = "warehouse",
    WarehouseDelivery = "warehouse-delivery"
}

export declare type VignetteNames = `${VignetteName}`;

/**
 * String array of all vignette names
 */
export declare const vignetteNames: VignetteName[];

export { }
