import { Plugin } from 'vite';
import { OptimizeOptions } from 'svgo';

/// <reference path="../module.d.ts" />

interface ViteSvgIconsPlugin {
    /**
     * icons folder, all svg files in it will be converted to svg sprite.
     */
    iconDirs: string[];
    /**
     * svgo configuration, used to compress svg
     * @default：true
     */
    svgoOptions?: boolean | OptimizeOptions;
    /**
     * icon format
     * @default: icon-[dir]-[name]
     */
    symbolId?: string;
}
interface FileStats {
    relativeName: string;
    mtimeMs?: number;
    code: string;
    symbolId?: string;
}
declare const _default: (opt: ViteSvgIconsPlugin) => Plugin;

declare function createModuleCode(cache: Map<string, FileStats>, svgoOptions: OptimizeOptions, options: ViteSvgIconsPlugin): Promise<{
    code: string;
    idSet: string;
}>;
/**
 * Preload all icons in advance
 * @param cache
 * @param options
 */
declare function compilerIcons(cache: Map<string, FileStats>, svgOptions: OptimizeOptions, options: ViteSvgIconsPlugin): Promise<{
    insertHtml: string;
    idSet: Set<string>;
}>;
declare function compilerIcon(file: string, symbolId: string, svgOptions: OptimizeOptions): Promise<string | null>;
declare function createSymbolId(name: string, options: ViteSvgIconsPlugin): string;
declare function discreteDir(name: string): {
    fileName: string | undefined;
    dirName: string;
};

export { ViteSvgIconsPlugin, compilerIcon, compilerIcons, createModuleCode, createSymbolId, _default as default, discreteDir };
