import Asset from './asset';
import type NoodlLoader from '../loader';
import type { YAMLNode } from '../types';
import * as t from './extractor-types';
export interface CreateExtractorOptions {
}
export interface ExtractOptions<As extends 'array' | 'object'> {
    as?: As;
    include?: t.ExtractAssetPreset | t.ExtractAssetPreset[] | 'any';
    prepare?: (state: Record<string, any>) => Record<string, any> | undefined | void;
    use?: t.ExtractFn | {
        extract: t.ExtractFn;
        once?: boolean;
    } | (t.ExtractFn | {
        extract: t.ExtractFn;
        once?: boolean;
    })[];
}
declare function createExtractor(loader: NoodlLoader): <As extends "object" | "array" = "object">(value: YAMLNode, { as, include, prepare, use: useProp }?: ExtractOptions<As>) => Promise<As extends "array" ? Asset<Record<string, any>>[] : Record<string, Asset<Record<string, any>>>>;
export default createExtractor;
export { createExtractor };
