import { NumericMatrix } from './index'; export declare type SimpleExpressionSideType = 'left' | 'right'; export declare type SimplexSolveType = 'maximize' | 'minimize' | string; export interface SimplexDefinition { Type: SimplexSolveType; Objective: string; Constraints: string[]; } export declare class Simplex { private problem; private input; private output; private tableau; private state; constructor(problem: SimplexDefinition); get Definition(): SimplexDefinition; solve(): SimplexOutput; static solve(problem: SimplexDefinition): SimplexOutput; checkForErrors(obj: SimplexDefinition): void; static getErrors(obj: SimplexDefinition): "An object must be passed to Simplex.solve()" | "The object must have the properties `type`, `objective` and `constraints`."; private solveInternal; } export declare class SimplexMatrix extends NumericMatrix { constructor(...rows: number[][]); protected checkColumnIndex(col: number): void; protected checkRowIndex(row: number): void; protected checkIndexes(row: number, col: number): void; get ColSize(): number; get RowSize(): number; getSize(): number[]; static scaleRow(scale: number, row: number[]): number[]; static addRows(rowA: number[], rowB: number[]): number[]; static scaleThenAddRows(scaleA: number, rowA: number[], scaleB: number, rowB: number[]): number[]; static inverseArray(arr: number[]): number[]; toString(): string; setUniformedWidth(): this; getGreatestValueFromLastRow(isPositive?: boolean): number; getRowIndexWithPosMinColumnRatio(colI: number, excludeLastRow?: boolean): { rowIndex: number; minValue: number; }; getUnitValueForColumn(colI: number): number; getLastElementOnLastRow(): number; static getGreatestElementInRow(arr: number[], excludeIndex: number, findPositive?: boolean): { value: number; index: number; }; addRow(arr: number | number[]): this; addToRow(iRow: number, els: number | number[]): this; equals(obj: SimplexMatrix): boolean; static getMaxArray(arrays: number[][]): { index: number; max: number; }; scaleRow(scaleA: number, rowI: number): this; pivot(rowI: number, colI: number): this; } export declare class SimplexExpression { private terms; constructor(str: string); get Terms(): any; static encodeE(str: string): string; static decodeE(str: string): string; static hasManyCompares(str: string): boolean; static addSpaceBetweenTerms(str: string): string; static hasExcludedOperations(str: string): boolean; static hasIncompleteBinaryOperator(str: string): boolean; static hasComparison(str: string): boolean; static getErrorMessage(str: string): string; static checkString(str: string): void; static extractComponentsFromVariable(str: string): (string | number)[]; static splitStrByTerms(str: string): string[]; static convertExpressionToObject(str: string): any; static termAtIndex(i: number, name: string, value: number): any; getTermNames(excludeNumbers?: boolean, excludeSlack?: boolean): string[]; forEachTerm(fn: (prop: string, item: any, items: any) => void): void; forEachConstant(fn: (prop: string, item: string, items: any) => void): void; forEachVariable(fn: (prop: string, item: string, items: any) => void): void; toString(): string; inverse(): this; addTerm(name: string, value: any): this; setTerm(name: string, value: any): this; addExpression(obj: string | SimplexExpression): this; toTermValueArray(): any[][]; addTerms(arr: any[]): this; removeTerm(name: string): this; scale(factor: number): this; hasTerm(name: string): boolean; getTermValue(name: string): any; getAllCoeffients(excludeNumbers?: boolean, excludeSlack?: boolean): number[]; getCoefficients(termNames: string[]): any[]; clon(): SimplexExpression; } export declare class SimplexConstraint { private comparison; private leftSide; private rightSide; private specialTerms; static readonly EPSILON = 0.000001; constructor(str?: string); equals(obj: any): boolean; get LeftSide(): SimplexExpression; get RightSide(): SimplexExpression; get Comparison(): string; static hasManyCompares(str: string): boolean; static hasIncompleteBinaryOperator(str: string): boolean; static getErrorMessage(str: string): string; static checkInput(str: string): void; static switchSides(sideA: any, sideB: any, forEachTermFunc: any): void; getTermNames(excludeNumbers?: boolean): any; static parseToObject(str: string): { lhs: SimplexExpression; rhs: SimplexExpression; comparison: string; }; static parse(str: string): SimplexConstraint; toString(): string; getSwappedSides(doSwap?: boolean): { a: SimplexExpression; b: SimplexExpression; }; moveTypeToOneSide(varSide: SimpleExpressionSideType, numSide: SimpleExpressionSideType): this; inverse(): this; removeStrictInequality(): this; normalize(): this; addSlack(val: any): this; setSpecialTerm(obj: any): this; addArtificalVariable(val: any): this; hasSpecialTerm(name: string): boolean; renameSlack(name: string): this; renameArtificial(name: string): this; convertToEquation(): this; getSpecialTermNames(): any[]; getSpecialTermValue(name: string): any; getArtificalName(): any; scale(factor: number): this; varSwitchSide(name: string, moveTo: string): this; getCoefficients(termNames: string[]): any[]; getTermValuesFromLeftSide(termNames: string[]): any[]; } export declare class SimplexTableau { private input; private colNames; private matrix; private limit; private cycles; constructor(input: SimplexInput); private static getErrorMessage; private checkForError; private addZToMatrix; addConstraintsToMatrix(termNames: string[]): void; private getSortedTermNames; private setMatrixFromInput; solve(isMin?: boolean): this; getPivotPoint(matrix: SimplexMatrix, isMin: boolean): { column: number; row: number; }; getOutput(): SimplexOutput; toString(): string; } export declare class SimplexInput { private z; private type; private terms; private constraints; private isStandardMode; constructor(type: string, z: string, constraints: string[]); private getZTermNotInAnyOfTheConstraints; private checkConstraints; private getArrOfConstraints; private computeType; private doAnyConstrainsHaveRelation; private doAllConstrainsHaveRelation; private anyConstraints; private allConstraints; private getAllArtificalNames; private forEachConstraint; private addNumbersToSpecialTerms; getTermNames(onlyVariables?: boolean): string[]; getAllSpecialTermNames(): string[]; private setTermNames; get Constraints(): SimplexConstraint[]; get Z(): SimplexExpression; toString(): string; convertConstraintsToMaxForm(): void; convertToStandardForm(): this; } export declare class SimplexOutput { private result; constructor(obj: any); static getErrorMessage(obj: any): string; checkForError(): void; toString(): string; get Result(): any; }