import { ObjectType } from "../targets";
export type CommandParameters = {
    [parmId: string]: string;
};
export type CompileAttribute = {
    [ext: string]: CompileData;
};
export interface CompileData {
    /** indicates what type of object will be built from this source */
    becomes: ObjectType;
    /** will copy the source to a temp member first */
    member?: boolean;
    /** `preCommands` do not respect the library list and is run before 'command' */
    preCommands?: string[];
    /** `command` does respect the library list */
    command?: string;
    parameters?: CommandParameters;
    /** Used if the commands are built up from source. Usually means `command` and `commands` is blank */
    commandSource?: boolean;
    /** `postCommands` do not respect the library list and is run after 'command' */
    postCommands?: string[];
    /** if the object can be built without source, flag this true so it builds generic rules */
    sourceOptional?: boolean;
    /** if the non-source object now requires source. Use make generic name like `qbndsrc/%.bnd` */
    targetSource?: string;
}
export interface Action {
    name: string;
    command: string;
    extensions?: string[];
    environment?: "ile";
}
export declare function getBranchLibraryName(currentBranch: string): string;
export declare function extCanBeProgram(ext: string): boolean;
export declare function getTrueBasename(name: string): string;
export declare function getObjectType(ext: string): ObjectType;
export declare function getDefaultCompiles(): CompileAttribute;
