import { EpanetModule } from '@model-create/epanet-engine'; import { Workspace } from '../'; import { NodeType, NodeProperty, ActionCodeType, CountType, InitHydOption, LinkType, LinkProperty, PumpType, StatusReport, AnalysisStatistic, ObjectType, FlowUnits, QualityType, Option, TimeParameter, DemandModel, ControlType, RuleObject, RuleVariable, RuleOperator, RuleStatus, CurveType } from '../enum'; declare class Project { _ws: Workspace; _EN: EpanetModule | undefined; private _projectHandle; private _epanetVersionInt; private readonly _absoluteMinVersion; private static readonly _finalizer; getComment: (objectType: ObjectType, index: number) => string; setComment: (objectType: ObjectType, index: number, comment: string) => void; openX: (inputFile: string, reportFile: string, binaryFile: string) => void; addNode: (id: string, type: NodeType) => number; getNodeIndex: (id: string) => number; getNodeValue: (index: number, property: NodeProperty) => number; setNodeValue: (index: number, property: NodeProperty, value: number) => void; setJunctionData: (nodeIndex: number, elev: number, demand: number, patternId: string) => void; getNodeType: (nodeIndex: number) => NodeType; deleteNode: (index: number, actionCode: ActionCodeType) => void; getNodeId: (index: number) => string; setNodeId: (index: number, newid: string) => void; setTankData: (index: number, elev: number, initlvl: number, minlvl: number, maxlvl: number, diam: number, minvol: number, volcurve: string) => void; getCoordinates: (index: number) => { x: number; y: number; }; setCoordinates: (index: number, x: number, y: number) => void; solveH: () => void; useHydFile: (filename: string) => void; openH: () => void; initH: (initFlag: InitHydOption) => void; runH: () => number; nextH: () => number; saveH: () => void; saveHydFile: (filename: string) => void; closeH: () => void; addLink: (id: string, linkType: LinkType, fromNode: string, toNode: string) => number; deleteLink: (index: number, actionCode: ActionCodeType) => void; getLinkIndex: (id: string) => number; getLinkId: (index: number) => string; setLinkId: (index: number, newid: string) => void; getLinkType: (index: number) => LinkType; getLinkNodes: (index: number) => { node1: number; node2: number; }; setLinkNodes: (index: number, node1: number, node2: number) => void; getLinkValue: (index: number, property: LinkProperty) => number; setLinkValue: (index: number, property: LinkProperty, value: number) => void; setPipeData: (index: number, length: number, diam: number, rough: number, mloss: number) => void; getPumpType: (index: number) => PumpType; getHeadCurveIndex: (linkIndex: number) => number; setHeadCurveIndex: (linkIndex: number, curveIndex: number) => void; getVertexCount: (index: number) => number; getVertex: (index: number, vertex: number) => { x: number; y: number; }; setVertices: (index: number, x: number[], y: number[]) => void; close: () => void; getCount: (countType: CountType) => number; getTitle: () => { line1: string; line2: string; line3: string; }; setTitle: (line1: string, line2: string, line3: string) => void; init: (reportFile: string, binaryFile: string, unitsType: number, headlossType: number) => void; open: (inputFile: string, reportFile: string, binaryFile: string) => void; saveInpFile: (filename: string) => void; runProject: (inputFile: string, reportFile: string, outputFile: string) => void; writeLine: (line: string) => void; report: () => void; copyReport: (filename: string) => void; clearReport: () => void; resetReport: () => void; setReport: (format: string) => void; setStatusReport: (level: StatusReport) => void; getStatistic: (type: AnalysisStatistic) => number; getResultIndex: (type: ObjectType.Node | ObjectType.Link, index: number) => number; addPattern: (id: string) => void; deletePattern: (index: number) => void; getPatternIndex: (id: string) => number; getPatternId: (index: number) => string; setPatternId: (index: number, id: string) => void; getPatternLength: (index: number) => number; getPatternValue: (index: number, period: number) => number; setPatternValue: (index: number, period: number, value: number) => void; getAveragePatternValue: (index: number) => number; setPattern: (index: number, values: number[]) => void; solveQ: () => void; openQ: () => void; initQ: (initFlag: InitHydOption.Save | InitHydOption.NoSave) => void; runQ: () => number; nextQ: () => number; stepQ: () => number; closeQ: () => void; getFlowUnits: () => FlowUnits; getOption: (option: Option) => number; getQualityInfo: () => { qualType: QualityType; chemName: string; chemUnits: string; traceNode: number; }; getQualityType: () => { qualType: QualityType; traceNode: number; }; getTimeParameter: (param: TimeParameter) => number; setFlowUnits: (units: FlowUnits) => void; setOption: (option: Option, value: number) => void; setQualityType: (qualType: QualityType, chemName: string, chemUnits: string, traceNode: string) => void; setTimeParameter: (param: TimeParameter, value: number) => void; addDemand: (nodeIndex: number, baseDemand: number, demandPattern: string, demandName: string) => void; deleteDemand: (nodeIndex: number, demandIndex: number) => void; getBaseDemand: (nodeIndex: number, demandIndex: number) => number; getDemandIndex: (nodeIndex: number, demandName: string) => number; getDemandModel: () => { type: DemandModel; pmin: number; preq: number; pexp: number; }; getDemandName: (nodeIndex: number, demandIndex: number) => string; getDemandPattern: (nodeIndex: number, demandIndex: number) => number; getNumberOfDemands: (nodeIndex: number) => number; setBaseDemand: (nodeIndex: number, demandIndex: number, baseDemand: number) => void; setDemandModel: (type: DemandModel, pmin: number, preq: number, pexp: number) => void; setDemandName: (nodeIndex: number, demandIdx: number, demandName: string) => void; setDemandPattern: (nodeIndex: number, demandIndex: number, patIndex: number) => void; addControl: (type: ControlType, linkIndex: number, setting: number, nodeIndex: number, level: number) => number; deleteControl: (index: number) => void; getControl: (index: number) => { type: ControlType; linkIndex: number; setting: number; nodeIndex: number; level: number; }; setControl: (index: number, type: ControlType, linkIndex: number, setting: number, nodeIndex: number, level: number) => void; addRule: (rule: string) => void; deleteRule: (index: number) => void; getRule: (index: number) => { premiseCount: number; thenActionCount: number; elseActionCount: number; priority: number; }; getRuleId: (index: number) => string; getPremise: (ruleIndex: number, premiseIndex: number) => { logop: number; object: RuleObject; objIndex: number; variable: RuleVariable; relop: RuleOperator; status: RuleStatus; value: number; }; setPremise: (ruleIndex: number, premiseIndex: number, logop: number, object: RuleObject, objIndex: number, variable: RuleVariable, relop: RuleOperator, status: RuleStatus, value: number) => void; setPremiseIndex: (ruleIndex: number, premiseIndex: number, objIndex: number) => void; setPremiseStatus: (ruleIndex: number, premiseIndex: number, status: RuleStatus) => void; setPremiseValue: (ruleIndex: number, premiseIndex: number, value: number) => void; getThenAction: (ruleIndex: number, actionIndex: number) => { linkIndex: number; status: RuleStatus; setting: number; }; setThenAction: (ruleIndex: number, actionIndex: number, linkIndex: number, status: RuleStatus, setting: number) => void; getElseAction: (ruleIndex: number, actionIndex: number) => { linkIndex: number; status: RuleStatus; setting: number; }; setElseAction: (ruleIndex: number, actionIndex: number, linkIndex: number, status: RuleStatus, setting: number) => void; setRulePriority: (index: number, priority: number) => void; addCurve: (id: string) => void; deleteCurve: (index: number) => void; getCurveIndex: (id: string) => number; getCurveId: (index: number) => string; setCurveId: (index: number, id: string) => void; getCurveLenth: (index: number) => number; getCurveType: (index: number) => CurveType; getCurveValue: (curveIndex: number, pointIndex: number) => { x: number; y: number; }; setCurveValue: (curveIndex: number, pointIndex: number, x: number, y: number) => void; setCurve: (index: number, xValues: number[], yValues: number[]) => void; getCurve(index: number): { id: string; x: number[]; y: number[]; }; setLinkType(index: number, linkType: LinkType, actionCode: ActionCodeType): number; constructor(ws: Workspace); private _initializeProject; private _createDummyMethods; private _createProject; private _getAndVerifyEpanetVersion; private _formatVersionInt; private _buildApiMethods; private _createApiMethod; private _allocateMemory; private _allocateMemoryForArray; private _getValue; private _checkError; } export default Project;