import { getFnPtrHandler } from '../fnPtrHandler';
import { buildInteropUtility } from '../interopUtility';
import { wrapSassImporter } from './wrapSassImporter';
declare type importCallbackType = (path: string, importEntry: SassImportEntryInterface, compiler: any) => Array<SassImportEntryInterface>;
/**
 * Interop interface to `Sass_Import_Entry`
 *
 * This interface doesn't implements ownership api
 * sass_import_take_source / sass_import_take_srcmap
 */
interface SassImportEntryInterface {
    /**
     * Property accessor to `sass_import_set_error` and `sass_import_get_error_(line|column|message)`
     */
    error: {
        message: string;
        line: number;
        column: number;
    };
    /**
     * Property accessor to `sass_import_get_imp_path`
     */
    readonly importPath: string;
    /**
     * Property accessor to `sass_import_get_abs_path`
     */
    readonly absPath: string;
    /**
     * Property accessor to `sass_import_get_source`
     */
    readonly source: string;
    /**
     * Property accessor to `sass_import_get_srcmap`
     */
    readonly sourceMap: string;
    /**
     * Release allocated memory with created instance.
     * Accessor to sass_delete_import
     */
    dispose(): void;
}
declare class SassImportEntry implements SassImportEntryInterface {
    private readonly cwrapImporter;
    private readonly interop;
    private readonly fnPtrHandler;
    /**
     * Raw pointer to `struct Sass_Import_Entry*`
     * @internal
     */
    sassImportEntryPtr: number;
    /**
     * Hold pointer to function added via `addFunction`, to be removed when disposing entry instance.
     */
    private callbackPtr;
    /**
     * Hold pointers to internaly allocated strings, to be removed when disposing entry instance
     */
    private readonly allocatedStringPtr;
    constructor(cwrapImporter: ReturnType<typeof wrapSassImporter>, interop: ReturnType<typeof buildInteropUtility>, fnPtrHandler: ReturnType<typeof getFnPtrHandler>);
    makeImport(_importCallback: importCallbackType): void;
    makeImporter(rel: string, abs: string, source: string, sourceMap: string): void;
    error: {
        message: string;
        line: number;
        column: number;
    };
    readonly importPath: string;
    readonly absPath: string;
    readonly source: string;
    readonly sourceMap: string;
    dispose(): void;
}
export { SassImportEntryInterface, SassImportEntry, importCallbackType };
