import { File } from '../type';
/**
 * FileOpener function type for opening files
 * TypeScript version of Go's FileOpener func
 */
export type FileOpener = () => Promise<File>;
/**
 * MetaProvider interface for objects that can provide FileMeta
 */
export interface MetaProvider {
    meta(): FileMeta;
}
/**
 * FileMeta represents file metadata
 * Simplified TypeScript version of Go's FileMeta struct
 */
export declare class FileMeta {
    private filename;
    private componentRoot;
    private componentDir;
    private openFunc;
    constructor(filename?: string, openFunc?: FileOpener | null);
    /**
     * FileName returns the filename
     */
    fileName(): string;
    /**
     * RelativeFilename returns the relative filename from root
     */
    relativeFilename(): string;
    /**
     * Component returns the component directory
     */
    component(): string;
    /**
     * Root returns the component root
     */
    root(): string;
    /**
     * Open opens the file using the OpenFunc
     */
    open(): Promise<File>;
    /**
     * Set the filename
     */
    setFileName(filename: string): void;
    /**
     * Set the component root
     */
    setComponentRoot(root: string): void;
    /**
     * Set the component directory
     */
    setComponentDir(dir: string): void;
    /**
     * Set the open function
     */
    setOpenFunc(openFunc: FileOpener): void;
    /**
     * Merge merges another FileMeta into this one
     * Only copies non-empty values
     */
    merge(from: FileMeta): void;
}
/**
 * Creates a new FileMeta instance
 */
export declare function newFileMeta(filename?: string, openFunc?: FileOpener): FileMeta;
//# sourceMappingURL=filemeta.d.ts.map