declare type AnyChars = S extends `${infer T}${infer U}` ? T | AnyChars : never; declare type OperatorParam = [AnyChars, number]; declare type OperatorRest

= P extends [] ? [] : P extends readonly [infer O, ...infer R] ? [OperatorParam, ...OperatorRest] : never; export declare class Operator

{ sym: P; priority: number; calculate: (first: number, ...rest: OperatorRest

) => number; constructor(sym: P, priority: number, calculate: (first: number, ...rest: OperatorRest

) => number); prepareParams(chars: string[], numbers: number[]): OperatorRest

; doCalculation(first: number, chars: string[], numbers: number[]): number; } export {};