/** * @fileoverview Shared Zod schema fragments for station output, reused across all tools: the * station shape (used by find and detail), connection shape, address shape, comment shape (used by * get_station and get_station_comments), and the markdown renderers that keep format()↔content[] * parity in one place. * @module mcp-server/tools/definitions/_station-schema */ import { z } from '@cyanheads/mcp-ts-core'; /** Structured station address + coordinates. */ export declare const AddressSchema: z.ZodObject<{ line1: z.ZodOptional; town: z.ZodOptional; stateOrProvince: z.ZodOptional; postcode: z.ZodOptional; country: z.ZodOptional; countryCode: z.ZodOptional; latitude: z.ZodNumber; longitude: z.ZodNumber; accessComments: z.ZodOptional; }, z.core.$strip>; /** A single connector at a station. */ export declare const ConnectionSchema: z.ZodObject<{ connectionTypeId: z.ZodOptional; connectionType: z.ZodOptional; level: z.ZodOptional; levelId: z.ZodOptional; powerKW: z.ZodOptional>; currentType: z.ZodOptional; amps: z.ZodOptional>; voltage: z.ZodOptional>; quantity: z.ZodOptional>; }, z.core.$strip>; /** A community check-in or comment, shared by openchargemap_get_station and openchargemap_get_station_comments. */ export declare const CommentSchema: z.ZodObject<{ user: z.ZodOptional; commentType: z.ZodOptional; checkinStatus: z.ZodOptional; checkinStatusId: z.ZodOptional; checkinStatusIsPositive: z.ZodOptional; comment: z.ZodOptional; rating: z.ZodOptional>; relatedUrl: z.ZodOptional; dateCreated: z.ZodOptional; }, z.core.$strip>; /** Comment type inferred from {@link CommentSchema} — the shape `format()` receives post-parse. */ export type Comment = z.infer; /** The core station shape shared by search results and detail. */ export declare const StationSchema: z.ZodObject<{ id: z.ZodNumber; uuid: z.ZodString; title: z.ZodString; address: z.ZodObject<{ line1: z.ZodOptional; town: z.ZodOptional; stateOrProvince: z.ZodOptional; postcode: z.ZodOptional; country: z.ZodOptional; countryCode: z.ZodOptional; latitude: z.ZodNumber; longitude: z.ZodNumber; accessComments: z.ZodOptional; }, z.core.$strip>; distance: z.ZodOptional; distanceUnit: z.ZodOptional>; operator: z.ZodOptional; operatorId: z.ZodOptional; usageType: z.ZodOptional; isPayAtLocation: z.ZodOptional; isMembershipRequired: z.ZodOptional; isAccessKeyRequired: z.ZodOptional; numberOfPoints: z.ZodOptional; status: z.ZodOptional; statusTypeId: z.ZodOptional; isOperational: z.ZodOptional; dateLastVerified: z.ZodOptional>; isRecentlyVerified: z.ZodOptional; connections: z.ZodArray; connectionType: z.ZodOptional; level: z.ZodOptional; levelId: z.ZodOptional; powerKW: z.ZodOptional>; currentType: z.ZodOptional; amps: z.ZodOptional>; voltage: z.ZodOptional>; quantity: z.ZodOptional>; }, z.core.$strip>>; dataProvider: z.ZodOptional; }, z.core.$strip>; /** Station type inferred from {@link StationSchema} — the shape `format()` receives post-parse. */ export type Station = z.infer; /** * The full station record: the shared station shape plus the fields OCM populates only on a * `verbose=true` detail fetch. Shared by openchargemap_get_station and the station resource, which * serve the same record from the same normalizer. */ export declare const DetailStationSchema: z.ZodObject<{ id: z.ZodNumber; uuid: z.ZodString; title: z.ZodString; address: z.ZodObject<{ line1: z.ZodOptional; town: z.ZodOptional; stateOrProvince: z.ZodOptional; postcode: z.ZodOptional; country: z.ZodOptional; countryCode: z.ZodOptional; latitude: z.ZodNumber; longitude: z.ZodNumber; accessComments: z.ZodOptional; }, z.core.$strip>; distance: z.ZodOptional; distanceUnit: z.ZodOptional>; operator: z.ZodOptional; operatorId: z.ZodOptional; usageType: z.ZodOptional; isPayAtLocation: z.ZodOptional; isMembershipRequired: z.ZodOptional; isAccessKeyRequired: z.ZodOptional; numberOfPoints: z.ZodOptional; status: z.ZodOptional; statusTypeId: z.ZodOptional; isOperational: z.ZodOptional; dateLastVerified: z.ZodOptional>; isRecentlyVerified: z.ZodOptional; connections: z.ZodArray; connectionType: z.ZodOptional; level: z.ZodOptional; levelId: z.ZodOptional; powerKW: z.ZodOptional>; currentType: z.ZodOptional; amps: z.ZodOptional>; voltage: z.ZodOptional>; quantity: z.ZodOptional>; }, z.core.$strip>>; dataProvider: z.ZodOptional; generalComments: z.ZodOptional; usageCost: z.ZodOptional; dataProviderUrl: z.ZodOptional; dateLastStatusUpdate: z.ZodOptional>; submissionStatus: z.ZodOptional; media: z.ZodOptional; }, z.core.$strip>>>; comments: z.ZodOptional; commentType: z.ZodOptional; checkinStatus: z.ZodOptional; checkinStatusId: z.ZodOptional; checkinStatusIsPositive: z.ZodOptional; comment: z.ZodOptional; rating: z.ZodOptional>; relatedUrl: z.ZodOptional; dateCreated: z.ZodOptional; }, z.core.$strip>>>; }, z.core.$strip>; /** Render one station as a markdown block. Shared by find/detail format() so parity holds. */ export declare function renderStationBlock(s: Station): string; /** * Describe how usable the station is. OCM marks "Temporarily Unavailable" and "Partly Operational * (Mixed)" as operational, so on those two the flag alone would read as all-clear — the availability * leads and the raw flag follows, named as the flag it is rather than as a verdict. */ export declare function renderOperationalText(statusTypeId: number | undefined, isOperational: boolean | undefined): string; /** * Split a comment list into the rows worth rendering and a count of those with nothing to say. * A row is worth rendering when it carries anything a reader can act on — text, a rating, a * check-in outcome, a link, or a problem report. What is left is a bare username and date, and OCM * has stations whose entire comment list is that shape, so text output names the count instead of * emitting a run of blank rows. Nothing is dropped from the structured output. */ export declare function visibleComments(comments: Comment[]): { shown: Comment[]; omitted: number; }; /** Render one comment line, covering every comment field. */ export declare function renderComment(c: Comment): string; //# sourceMappingURL=_station-schema.d.ts.map