// Messages passed to and from the Web Worker export interface Message { loadData?: LoadData, dataLoaded?: DataLoaded findClosestNode?: FindClosestNode, foundClosestNode?: FoundClosestNode, findPathsFromNode?: FindPathsFromNode, foundPathsFromNode?: FoundPathsFromNode, getFullPath?: GetFullPath, returnFullPath?: ReturnFullPath, excludeAreas?: ExcludeAreas, searchArea?: SearchArea, continueSearch?: ContinueSearch, searchAreaResult?: SearchAreaResult, errorMessage?: ErrorMessage } interface LoadData { data: Uint8Array } interface DataLoaded { } interface FindClosestNode { latitude: number, longitude: number } interface FoundClosestNode { originalLatitude: number, originalLongitude: number, foundLatitude: number, foundLongitude: number, foundNodeId: number } interface FindPathsFromNode { nodeId: number, minimumSpeed: number, maximumSpeed: number, maximumSpeedLimit: number, dragCoefficient: number, allowMotorways: boolean, allowTunnels: boolean, allowAgainstOneway: boolean, limitCornerSpeed: boolean, reverse: boolean } export interface Endpoint { nodeId: number, latitude: number, longitude: number, distanceFromStart: number } interface FoundPathsFromNode { nodeId: number, endpoints: Endpoint[], reverse: boolean } interface GetFullPath { startNodeId: number, endNodeId: number, minimumSpeed: number, dragCoefficient: number } export interface Coordinate { latitude: number, longitude: number } export interface PathSegment { start: Coordinate, end: Coordinate, calculatedSpeed: number, requiredSpeed: number } interface ReturnFullPath { pathSegments: PathSegment[] } export interface Ring { coordinates: Coordinate[] } export interface Polygon { rings: Ring[] } interface ExcludeAreas { polygons: Polygon[] } interface SearchArea { polygons: Polygon[], minimumSpeed: number, maximumSpeed: number, maximumSpeedLimit: number, dragCoefficient: number, allowMotorways: boolean, allowTunnels: boolean, allowAgainstOneway: boolean, limitCornerSpeed: boolean } interface ContinueSearch { } export interface SearchAreaResultEntry { nodeId: number, latitude: number, longitude: number, longestRoute: number } interface SearchAreaResult { remainingNodes: number, searchResults: SearchAreaResultEntry[] } interface ErrorMessage { error: string }