import { RecipeIngredient, RecipePredicate } from '.'; export interface RecipeLogicBlock { type: RecipeLogicType; id: string; } export interface RecipeLogic { body: RecipeLogicBlock[]; } export declare type RecipeLogicType = 'WHEN' | 'DONE' | 'NOT' | 'BUY' | 'SELL'; export interface RecipeLogicWhenExpression { subject: RecipeIngredient; predicate: RecipePredicate; } export interface RecipeLogicWhen extends RecipeLogicBlock { type: 'WHEN'; expressions: RecipeLogicWhenExpression[]; body: RecipeLogicBlock[]; } export interface RecipeLogicNot extends RecipeLogicBlock { type: 'NOT'; when: RecipeLogicWhen; } export interface RecipeLogicDone extends RecipeLogicBlock { type: 'DONE'; } export interface RecipeLogicBuy extends RecipeLogicBlock { type: 'BUY'; } export interface RecipeLogicSell extends RecipeLogicBlock { type: 'SELL'; } export declare const createLogicBlockId: () => string; export declare const addExpression: (block: RecipeLogicWhen | RecipeLogicNot, expression: RecipeLogicWhenExpression) => void; export declare const removeExpression: (block: RecipeLogicWhen | RecipeLogicNot, index: number) => void; export declare const addLogic: (block: RecipeLogicWhen | RecipeLogicNot, logic: RecipeLogicBlock) => void; export declare const removeLogic: (block: RecipeLogicWhen | RecipeLogicNot, index: number) => void; export declare const createRecipeLogicBlock: (type: RecipeLogicType) => RecipeLogicBlock; export declare const createRecipeLogicWhen: (expressions?: RecipeLogicWhenExpression[], body?: RecipeLogicBlock[]) => RecipeLogicWhen; export declare const createRecipeLogicNot: (expressions?: RecipeLogicWhenExpression[], body?: RecipeLogicBlock[]) => RecipeLogicNot; export declare const createRecipeLogicDone: () => RecipeLogicDone; export declare const createRecipeLogicBuy: () => RecipeLogicDone; export declare const createRecipeLogicSell: () => RecipeLogicDone;