import { SassImportEntryInterface } from '../importer/sassImportEntry';
import { wrapSassImporter } from '../importer/wrapSassImporter';
import { buildInteropUtility } from '../interopUtility';
import { wrapSassContext } from '../wrapSassContext';
import { wrapSassOptions } from './wrapSassOptions';
/**
 * Interop interface to `sass_option*` api
 * (https://github.com/sass/libsass/blob/master/docs/api-context.md#sass-options-api)
 */
interface SassOptionsInterface {
    /**
     * Property accessor to `sass_option_(get|set)_precision`
     */
    precision: number;
    /**
     * Property accessor to `sass_option_(get|set)_output_style`
     */
    outputStyle: OutputStyle;
    /**
     * Property accessor to `sass_option_(get|set)_source_comments`
     */
    sourceComments: boolean;
    /**
     * Property accessor to `sass_option_(get|set)_is_indented_syntax_src`
     */
    isIndentedSyntaxSrc: boolean;
    /**
     * Property accessor to `sass_option_(get|set)_omit_source_map_url`
     */
    omitMapComment: boolean;
    /**
     * Property accessor to `sass_option_(get|set)_omit_source_map_embed`
     */
    sourceMapEmbed: boolean;
    /**
     * Property accessor to `sass_option_(get|set)_source_map_file`
     */
    sourceMapFile: string;
    /**
     * Property accessor to `sass_option_(get|set)_output_path`
     */
    outputPath: string;
    /**
     * Property accessor to `sass_option_(get|set)_input_path`
     */
    inputPath: string;
    /**
     * Property accessor to `sass_option_(get|set)_c_importers`
     */
    importers: Array<SassImportEntryInterface>;
    /**
     * Push include path for compilation.
     * Accessor to sass_option_push_include_path
     *
     * @param {string} includePath path to be inlcluded
     */
    addIncludePath(includePath: string): void;
    /**
     * Push include path for plugin.
     * Accessor to sass_option_push_plugin_path
     *
     * @param {string} pluginPath path to be inlcluded
     */
    addPluginPath(pluginPath: string): void;
    /**
     * Release allocated memory with created instance.
     * Accessor to sass_delete_options
     */
    dispose(): void;
}
/**
 * Supported output style.
 */
declare enum OutputStyle {
    SASS_STYLE_NESTED = 0,
    SASS_STYLE_EXPANDED = 1,
    SASS_STYLE_COMPACT = 2,
    SASS_STYLE_COMPRESSED = 3
}
/**
 * @internal
 *
 */
declare class SassOptions implements SassOptionsInterface {
    private readonly cwrapCtx;
    private readonly cwrapOptions;
    private readonly cwrapImporter;
    private readonly interop;
    /**
     * Raw pointer to `struct Sass_Options*`
     * @internal
     */
    readonly sassOptionsPtr: number;
    /**
     * List of virtual mounted path.
     */
    private readonly mountedPath;
    /**
     * Hold pointers to internaly allocated strings, to be removed when disposing entry instance
     */
    private readonly allocatedStringPtr;
    /**
     * List of importers.
     */
    private importersList;
    /**
     * Construct new instance of SassOptions.
     *
     * @param {ReturnType<typeof wrapSassContext>} cwrapCtx cwrapped function object to sass context api.
     * @param {ReturnType<typeof wrapSassOptions>} cwrapOptions cwrapped function object to sass option api.
     *
     * Manual creation of this class is prohibited;
     * Should use `context.options.create` static interface instead.
     */
    constructor(cwrapCtx: ReturnType<typeof wrapSassContext>, cwrapOptions: ReturnType<typeof wrapSassOptions>, cwrapImporter: ReturnType<typeof wrapSassImporter>, interop: ReturnType<typeof buildInteropUtility>);
    precision: number;
    outputStyle: OutputStyle;
    sourceComments: boolean;
    isIndentedSyntaxSrc: boolean;
    omitMapComment: boolean;
    sourceMapEmbed: boolean;
    sourceMapFile: string;
    outputPath: string;
    inputPath: string;
    importers: Array<SassImportEntryInterface>;
    addIncludePath(includePath: string): void;
    addPluginPath(pluginPath: string): void;
    dispose(): void;
}
export { SassOptionsInterface, SassOptions, OutputStyle };
