import * as nodeFs from 'fs';
import { CreateOutput, GeneratorContext, TemplateOptions } from '../utils/types';
type Changes = {
    created: string[];
    conflicted: string[];
    identical: string[];
    forced: string[];
};
export declare function setCustomTemplatesRootPathOrGitRepo(pathOrRepoUri?: string, forceLoadingRemoteRepo?: boolean, fs?: typeof nodeFs): Promise<string | undefined>;
/**
 * Look up package version of @salesforce/templates package to supply a default API version
 */
export declare function getDefaultApiVersion(): string;
declare abstract class NotYeoman {
    changes: Changes;
    protected readonly _fs: typeof nodeFs;
    protected readonly _cwd: string;
    private _sourceRoot;
    private _destinationRoot;
    constructor(context?: GeneratorContext, cwd?: string);
    destinationPath(...dest: string[]): string;
    destinationRoot(rootPath?: string): string;
    sourceRoot(rootPath?: string): string;
    templatePath(...dest: string[]): string;
    render(source: string, destination: string, data?: Record<string, unknown>): Promise<void>;
    private register;
}
export declare abstract class BaseGenerator<TOptions extends TemplateOptions> extends NotYeoman {
    options: TOptions;
    /**
     * Set by sourceRootWithPartialPath called in generator
     */
    builtInTemplatesRootPath?: string;
    protected outputdir: string;
    protected apiversion: string;
    private customTemplatesRootPath;
    protected readonly templatesRootPath: string | undefined;
    /**
     * The constructor for the SfGenerator.
     *
     * @param options SfGenerator specific options.
     * @param context optional generator context for fs and template path injection
     */
    constructor(options: TOptions, context?: GeneratorContext, cwd?: string);
    /**
     * Set source root to built-in templates or custom templates root if available.
     * @param partialPath the relative path from the templates folder to templates root folder.
     */
    sourceRootWithPartialPath(partialPath: string): void;
    templatePath(...paths: string[]): string;
    run(opts?: {
        cwd?: string;
        customTemplatesRootPathOrGitRepo?: string;
        sourceRootPartial?: string;
    }): Promise<CreateOutput>;
    /**
     * Validate provided options
     */
    abstract validateOptions(): void;
    /**
     * Generate the files
     */
    abstract generate(): Promise<void>;
}
export {};
