/** Dependencies */
import {
    Collection,
    Components,
    EditorOrchestrator,
    Slots,
} from "@tripetto/builder";
import { ICalculator } from "./interface";
import { TOperators } from "../runner/operators";
import { TOpcodes } from "../runner/opcodes";
import { TModes } from "../runner/modes";
import { TAngles } from "../runner/angles";
import { TAge } from "../runner/age";
import { IScores } from "../runner/scores";
export interface IOperation {
    readonly name: (operation: Operation) => string | undefined;
    readonly title: (operation: Operation) => string | undefined;
    readonly editor: (
        operation: Operation,
        editor: EditorOrchestrator<Operation>
    ) => void;
}
export declare class Operation
    extends Collection.Item<ICalculator>
    implements ICalculator
{
    readonly startBlank = false;
    get calculator(): ICalculator;
    get block(): import("@tripetto/builder").NodeBlock;
    get outcome(): Slots.Numeric | undefined;
    get icon(): string;
    get name(): string;
    get title(): string;
    get width(): 520 | 475 | 400;
    get menu(): Components.MenuSubmenuWithImage[];
    operator: TOperators;
    opcode: TOpcodes;
    readonly operations: Collection.Provider<Operation, ICalculator>;
    description?: string;
    reference?: string | number;
    value?: string | number;
    exponent?: string | number;
    cona?: string | number;
    conb?: string | number;
    outa?: string | number;
    outb?: string | number;
    compareMode?: TModes;
    angleUnits?: TAngles;
    ageIn?: TAge;
    ageAbs?: boolean;
    ignoreCase?: boolean;
    scores?: IScores;
    min?: string | number;
    max?: string | number;
    divisor?: string | number;
    percentage?: string | number;
    get isSubCalculation(): boolean;
    get allowANS(): boolean;
    static get(opcode: TOpcodes): IOperation;
    set(props: {
        readonly operator: TOperators;
        readonly opcode: TOpcodes;
        readonly value?: string | number;
        readonly cona?: string | number;
        readonly conb?: string | number;
        readonly outa?: string | number;
        readonly outb?: string | number;
        readonly min?: string | number;
        readonly max?: string | number;
        readonly exponent?: string | number;
        readonly divisor?: string | number;
        readonly percentage?: string | number;
        readonly ageAbs?: boolean;
        readonly open?: boolean;
    }): this;
    format(
        property: keyof this,
        prefix?: string,
        suffix?: string,
        hasNumericSuffix?: boolean,
        boldNumbers?: boolean,
        defaultValue?: string
    ): string;
    defineEditor(): void;
    initOperation(): void;
    deleteOperation(): void;
}
