/** * Output schemas for the running-domain tools (issue #105). * * These schemas are the source of truth for the running tools' return * shapes: `running.ts` derives its `Activity` / `ActivityDetail` types * from them via `z.infer`, so the declared schema and the TypeScript * type cannot drift. * * Every object schema uses `.passthrough()` so the JSON Schema advertised * to clients stays `additionalProperties`-open -- a field the Rewind API * adds later does not break client-side validation. See schemas/shared.ts. */ import { z } from 'zod'; /** A single run, as listed by get_recent_runs. */ export declare const activitySchema: z.ZodObject<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">>; /** A single personal record, as listed by get_personal_records. */ export declare const personalRecordSchema: z.ZodObject<{ distance_label: z.ZodString; time: z.ZodString; pace: z.ZodString; date: z.ZodString; activity_name: z.ZodString; activity_id: z.ZodNumber; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ distance_label: z.ZodString; time: z.ZodString; pace: z.ZodString; date: z.ZodString; activity_name: z.ZodString; activity_id: z.ZodNumber; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ distance_label: z.ZodString; time: z.ZodString; pace: z.ZodString; date: z.ZodString; activity_name: z.ZodString; activity_id: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>; /** A single per-mile split, as listed by get_activity_splits. */ export declare const activitySplitSchema: z.ZodObject<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; /** A single per-year summary, as listed by get_running_years. */ export declare const runningYearSchema: z.ZodObject<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>; /** outputSchema for get_running_stats (flat stats object from `data`). */ export declare const runningStatsOutputSchema: z.ZodObject<{ total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration: z.ZodString; avg_pace: z.ZodNullable; years_active: z.ZodNumber; first_run: z.ZodNullable; eddington_number: z.ZodNumber; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration: z.ZodString; avg_pace: z.ZodNullable; years_active: z.ZodNumber; first_run: z.ZodNullable; eddington_number: z.ZodNumber; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration: z.ZodString; avg_pace: z.ZodNullable; years_active: z.ZodNumber; first_run: z.ZodNullable; eddington_number: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>; /** * outputSchema for get_recent_runs. The empty-state branch returns * `{ items: [] }`, which satisfies the same schema -- no union needed. */ export declare const recentRunsOutputSchema: z.ZodObject<{ items: z.ZodArray; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">>, "many">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ items: z.ZodArray; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ items: z.ZodArray; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ id: z.ZodNumber; strava_id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; strava_url: z.ZodOptional>; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">>; /** * outputSchema for get_personal_records. The empty-state branch returns * `{ items: [] }`, which satisfies the same schema. */ export declare const personalRecordsOutputSchema: z.ZodObject<{ items: z.ZodArray, z.objectInputType<{ distance_label: z.ZodString; time: z.ZodString; pace: z.ZodString; date: z.ZodString; activity_name: z.ZodString; activity_id: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>, "many">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ items: z.ZodArray, z.objectInputType<{ distance_label: z.ZodString; time: z.ZodString; pace: z.ZodString; date: z.ZodString; activity_name: z.ZodString; activity_id: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ items: z.ZodArray, z.objectInputType<{ distance_label: z.ZodString; time: z.ZodString; pace: z.ZodString; date: z.ZodString; activity_name: z.ZodString; activity_id: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">>; /** outputSchema for get_running_streaks (nested current/longest). */ export declare const runningStreaksOutputSchema: z.ZodObject<{ current: z.ZodObject<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; longest: z.ZodObject<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ current: z.ZodObject<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; longest: z.ZodObject<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ current: z.ZodObject<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; longest: z.ZodObject<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ days: z.ZodNumber; start: z.ZodNullable; end: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; }, z.ZodTypeAny, "passthrough">>; /** outputSchema for get_activity_details (a single run's detail object). */ export declare const activityDetailsOutputSchema: z.ZodObject<{ id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; heartrate_avg: z.ZodNullable; heartrate_max: z.ZodNullable; cadence: z.ZodNullable; calories: z.ZodNullable; suffer_score: z.ZodNullable; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; workout_type: z.ZodString; strava_url: z.ZodNullable; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; heartrate_avg: z.ZodNullable; heartrate_max: z.ZodNullable; cadence: z.ZodNullable; calories: z.ZodNullable; suffer_score: z.ZodNullable; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; workout_type: z.ZodString; strava_url: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ id: z.ZodOptional; name: z.ZodString; date: z.ZodString; distance_mi: z.ZodNumber; duration: z.ZodString; pace: z.ZodString; elevation_ft: z.ZodNumber; heartrate_avg: z.ZodNullable; heartrate_max: z.ZodNullable; cadence: z.ZodNullable; calories: z.ZodNullable; suffer_score: z.ZodNullable; city: z.ZodNullable; state: z.ZodNullable; is_race: z.ZodBoolean; workout_type: z.ZodString; strava_url: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>; /** * outputSchema for get_activity_splits. The empty-state branch returns * `{ activity_id, items: [] }`, which satisfies the same schema. */ export declare const activitySplitsOutputSchema: z.ZodObject<{ activity_id: z.ZodNumber; items: z.ZodArray; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>, "many">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ activity_id: z.ZodNumber; items: z.ZodArray; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ activity_id: z.ZodNumber; items: z.ZodArray; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ split: z.ZodNumber; distance_mi: z.ZodNumber; moving_time_s: z.ZodNumber; elapsed_time_s: z.ZodNumber; elevation_ft: z.ZodNumber; pace: z.ZodString; heartrate: z.ZodNullable; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">>; /** * outputSchema for get_running_years. The empty-state branch returns * `{ items: [] }`, which satisfies the same schema. */ export declare const runningYearsOutputSchema: z.ZodObject<{ items: z.ZodArray; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>, "many">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ items: z.ZodArray; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ items: z.ZodArray; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ year: z.ZodNumber; total_runs: z.ZodNumber; total_distance_mi: z.ZodNumber; total_elevation_ft: z.ZodNumber; total_duration_s: z.ZodNumber; avg_pace: z.ZodNullable; longest_run_mi: z.ZodNullable; race_count: z.ZodNumber; }, z.ZodTypeAny, "passthrough">>, "many">; }, z.ZodTypeAny, "passthrough">>;