import { Command } from './commands'; interface OptionsName { commands: Iterable; } interface OptionsSource { name?: string; } export declare class McFunction { readonly commands: Set; readonly name: string; dependencies: Set; constructor(name: string, opts?: OptionsName); constructor(name: string, cmds?: Iterable); constructor(source: () => void, opts?: OptionsSource); compile(): ReturnType; compile(path: string): Promise; private generate; /** * Add a command to the function * @param {Command} command the command to be added * @deprecated pass the commands as an array to the constructor instead */ addCommand(command: Command): void; /** * Copies the function * @param {McFunction} funct the function to be copied * @returns {McFunction} a reference to the function * @deprecated This implementation only creates a shallow copy and copies aren't necessary anyways */ static copy(funct: McFunction): McFunction; /** * @deprecated Use the constructor instead */ static from(source: () => void, opts?: { name?: string; }): McFunction; } export * from './arguments'; export * from './commands';