import { IFmodProject } from './interfaces/fmod-interfaces';
export interface FmodCodegenOptions {
    /**
     * Customises the type returned by FmodPlayer.rawProjectData.
     */
    projectDataType?: {
        name: string;
        importInstruction: string;
    };
}
export declare class FmodCodegen {
    private readonly _data;
    private readonly _options;
    private _importFrom;
    constructor(data: IFmodProject, options?: FmodCodegenOptions);
    /**
     * Overrides the default import location.
     * @param path Defaults to the module name.
     */
    importFrom(path: string): FmodCodegen;
    generateTo(mainName: string, destPath: string): void;
    generate(mainName: string): string;
    private generateIncludes;
    private generateMainCode;
    private generateEventCode;
    private generateGlobalParamCode;
    private generateLocalParamCode;
    private generateParamCode;
    private loadTemplate;
    /**
     * Creates a spacer function for the given indent. The spacer function takes one argument;
     * if it is > 0, the indent is not added, otherwise it is.
     *
     * This is used for replacing in templates where the search string is usually already indented,
     * so only the following lines need indentation.
     */
    private createSpacer;
}
