import { z } from 'zod';
import { CredentialType } from '@bubblelab/shared-schemas';
/**
 * User/owner (normalized)
 */
export declare const GranolaUserSchema: z.ZodObject<{
    name: z.ZodNullable<z.ZodString>;
    email: z.ZodString;
}, "strip", z.ZodTypeAny, {
    name: string | null;
    email: string;
}, {
    name: string | null;
    email: string;
}>;
/**
 * Calendar event associated with a note (normalized)
 */
export declare const GranolaCalendarEventSchema: z.ZodObject<{
    title: z.ZodNullable<z.ZodString>;
    invitees: z.ZodArray<z.ZodString, "many">;
    organiser: z.ZodNullable<z.ZodString>;
    calendarEventId: z.ZodNullable<z.ZodString>;
    startTime: z.ZodNullable<z.ZodString>;
    endTime: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    startTime: string | null;
    endTime: string | null;
    invitees: string[];
    organiser: string | null;
    calendarEventId: string | null;
}, {
    title: string | null;
    startTime: string | null;
    endTime: string | null;
    invitees: string[];
    organiser: string | null;
    calendarEventId: string | null;
}>;
/**
 * Folder membership (normalized)
 */
export declare const GranolaFolderSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
}, "strip", z.ZodTypeAny, {
    name: string;
    id: string;
}, {
    name: string;
    id: string;
}>;
/**
 * Transcript entry (normalized)
 */
export declare const GranolaTranscriptEntrySchema: z.ZodObject<{
    source: z.ZodEnum<["microphone", "speaker"]>;
    speakerLabel: z.ZodNullable<z.ZodString>;
    text: z.ZodString;
    startTime: z.ZodString;
    endTime: z.ZodString;
}, "strip", z.ZodTypeAny, {
    text: string;
    source: "microphone" | "speaker";
    startTime: string;
    endTime: string;
    speakerLabel: string | null;
}, {
    text: string;
    source: "microphone" | "speaker";
    startTime: string;
    endTime: string;
    speakerLabel: string | null;
}>;
/**
 * Note summary — returned inside list_notes (normalized).
 */
export declare const GranolaNoteSummarySchema: z.ZodObject<{
    id: z.ZodString;
    title: z.ZodNullable<z.ZodString>;
    owner: z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        email: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string | null;
        email: string;
    }, {
        name: string | null;
        email: string;
    }>;
    createdAt: z.ZodString;
    updatedAt: z.ZodString;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    id: string;
    owner: {
        name: string | null;
        email: string;
    };
    createdAt: string;
    updatedAt: string;
}, {
    title: string | null;
    id: string;
    owner: {
        name: string | null;
        email: string;
    };
    createdAt: string;
    updatedAt: string;
}>;
/**
 * Full note fields — returned FLAT on get_note (no wrapper object).
 * All fields are optional so callers using `sections` filtering don't
 * see undefined vs. missing differences at the type level.
 */
export declare const GranolaNoteFieldsSchema: z.ZodObject<{
    id: z.ZodString;
    title: z.ZodNullable<z.ZodString>;
    owner: z.ZodOptional<z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        email: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string | null;
        email: string;
    }, {
        name: string | null;
        email: string;
    }>>;
    createdAt: z.ZodString;
    updatedAt: z.ZodString;
    notesUrl: z.ZodNullable<z.ZodString>;
    summaryText: z.ZodOptional<z.ZodString>;
    summaryMarkdown: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    attendees: z.ZodOptional<z.ZodArray<z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        email: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string | null;
        email: string;
    }, {
        name: string | null;
        email: string;
    }>, "many">>;
    calendarEvent: z.ZodOptional<z.ZodNullable<z.ZodObject<{
        title: z.ZodNullable<z.ZodString>;
        invitees: z.ZodArray<z.ZodString, "many">;
        organiser: z.ZodNullable<z.ZodString>;
        calendarEventId: z.ZodNullable<z.ZodString>;
        startTime: z.ZodNullable<z.ZodString>;
        endTime: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    }, {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    }>>>;
    folders: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string;
        id: string;
    }, {
        name: string;
        id: string;
    }>, "many">>;
    transcript: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
        source: z.ZodEnum<["microphone", "speaker"]>;
        speakerLabel: z.ZodNullable<z.ZodString>;
        text: z.ZodString;
        startTime: z.ZodString;
        endTime: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }, {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }>, "many">>>;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    id: string;
    createdAt: string;
    updatedAt: string;
    notesUrl: string | null;
    owner?: {
        name: string | null;
        email: string;
    } | undefined;
    attendees?: {
        name: string | null;
        email: string;
    }[] | undefined;
    summaryText?: string | undefined;
    summaryMarkdown?: string | null | undefined;
    calendarEvent?: {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    } | null | undefined;
    folders?: {
        name: string;
        id: string;
    }[] | undefined;
    transcript?: {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }[] | null | undefined;
}, {
    title: string | null;
    id: string;
    createdAt: string;
    updatedAt: string;
    notesUrl: string | null;
    owner?: {
        name: string | null;
        email: string;
    } | undefined;
    attendees?: {
        name: string | null;
        email: string;
    }[] | undefined;
    summaryText?: string | undefined;
    summaryMarkdown?: string | null | undefined;
    calendarEvent?: {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    } | null | undefined;
    folders?: {
        name: string;
        id: string;
    }[] | undefined;
    transcript?: {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }[] | null | undefined;
}>;
declare const SectionSchema: z.ZodEnum<["summary", "attendees", "calendar", "folders", "transcript"]>;
export declare const GranolaParamsSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObject<{
    operation: z.ZodLiteral<"list_notes">;
    createdBefore: z.ZodOptional<z.ZodString>;
    createdAfter: z.ZodOptional<z.ZodString>;
    updatedAfter: z.ZodOptional<z.ZodString>;
    cursor: z.ZodOptional<z.ZodString>;
    pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    operation: "list_notes";
    pageSize: number;
    credentials?: Partial<Record<CredentialType, string>> | undefined;
    cursor?: string | undefined;
    createdBefore?: string | undefined;
    createdAfter?: string | undefined;
    updatedAfter?: string | undefined;
}, {
    operation: "list_notes";
    credentials?: Partial<Record<CredentialType, string>> | undefined;
    cursor?: string | undefined;
    pageSize?: number | undefined;
    createdBefore?: string | undefined;
    createdAfter?: string | undefined;
    updatedAfter?: string | undefined;
}>, z.ZodObject<{
    operation: z.ZodLiteral<"get_note">;
    noteId: z.ZodString;
    sections: z.ZodOptional<z.ZodArray<z.ZodEnum<["summary", "attendees", "calendar", "folders", "transcript"]>, "many">>;
    credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    operation: "get_note";
    noteId: string;
    credentials?: Partial<Record<CredentialType, string>> | undefined;
    sections?: ("summary" | "calendar" | "attendees" | "folders" | "transcript")[] | undefined;
}, {
    operation: "get_note";
    noteId: string;
    credentials?: Partial<Record<CredentialType, string>> | undefined;
    sections?: ("summary" | "calendar" | "attendees" | "folders" | "transcript")[] | undefined;
}>]>;
export declare const GranolaResultSchema: z.ZodDiscriminatedUnion<"operation", [z.ZodObject<{
    operation: z.ZodLiteral<"list_notes">;
    success: z.ZodBoolean;
    notes: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        title: z.ZodNullable<z.ZodString>;
        owner: z.ZodObject<{
            name: z.ZodNullable<z.ZodString>;
            email: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            name: string | null;
            email: string;
        }, {
            name: string | null;
            email: string;
        }>;
        createdAt: z.ZodString;
        updatedAt: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        title: string | null;
        id: string;
        owner: {
            name: string | null;
            email: string;
        };
        createdAt: string;
        updatedAt: string;
    }, {
        title: string | null;
        id: string;
        owner: {
            name: string | null;
            email: string;
        };
        createdAt: string;
        updatedAt: string;
    }>, "many">>;
    hasMore: z.ZodOptional<z.ZodBoolean>;
    cursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    error: z.ZodString;
}, "strip", z.ZodTypeAny, {
    error: string;
    success: boolean;
    operation: "list_notes";
    cursor?: string | null | undefined;
    notes?: {
        title: string | null;
        id: string;
        owner: {
            name: string | null;
            email: string;
        };
        createdAt: string;
        updatedAt: string;
    }[] | undefined;
    hasMore?: boolean | undefined;
}, {
    error: string;
    success: boolean;
    operation: "list_notes";
    cursor?: string | null | undefined;
    notes?: {
        title: string | null;
        id: string;
        owner: {
            name: string | null;
            email: string;
        };
        createdAt: string;
        updatedAt: string;
    }[] | undefined;
    hasMore?: boolean | undefined;
}>, z.ZodObject<{
    operation: z.ZodLiteral<"get_note">;
    success: z.ZodBoolean;
    error: z.ZodString;
} & {
    id: z.ZodOptional<z.ZodString>;
    title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    owner: z.ZodOptional<z.ZodOptional<z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        email: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string | null;
        email: string;
    }, {
        name: string | null;
        email: string;
    }>>>;
    createdAt: z.ZodOptional<z.ZodString>;
    updatedAt: z.ZodOptional<z.ZodString>;
    notesUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    summaryText: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    summaryMarkdown: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
    attendees: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        email: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string | null;
        email: string;
    }, {
        name: string | null;
        email: string;
    }>, "many">>>;
    calendarEvent: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodObject<{
        title: z.ZodNullable<z.ZodString>;
        invitees: z.ZodArray<z.ZodString, "many">;
        organiser: z.ZodNullable<z.ZodString>;
        calendarEventId: z.ZodNullable<z.ZodString>;
        startTime: z.ZodNullable<z.ZodString>;
        endTime: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    }, {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    }>>>>;
    folders: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        name: string;
        id: string;
    }, {
        name: string;
        id: string;
    }>, "many">>>;
    transcript: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
        source: z.ZodEnum<["microphone", "speaker"]>;
        speakerLabel: z.ZodNullable<z.ZodString>;
        text: z.ZodString;
        startTime: z.ZodString;
        endTime: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }, {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }>, "many">>>>;
}, "strip", z.ZodTypeAny, {
    error: string;
    success: boolean;
    operation: "get_note";
    title?: string | null | undefined;
    id?: string | undefined;
    owner?: {
        name: string | null;
        email: string;
    } | undefined;
    attendees?: {
        name: string | null;
        email: string;
    }[] | undefined;
    createdAt?: string | undefined;
    updatedAt?: string | undefined;
    notesUrl?: string | null | undefined;
    summaryText?: string | undefined;
    summaryMarkdown?: string | null | undefined;
    calendarEvent?: {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    } | null | undefined;
    folders?: {
        name: string;
        id: string;
    }[] | undefined;
    transcript?: {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }[] | null | undefined;
}, {
    error: string;
    success: boolean;
    operation: "get_note";
    title?: string | null | undefined;
    id?: string | undefined;
    owner?: {
        name: string | null;
        email: string;
    } | undefined;
    attendees?: {
        name: string | null;
        email: string;
    }[] | undefined;
    createdAt?: string | undefined;
    updatedAt?: string | undefined;
    notesUrl?: string | null | undefined;
    summaryText?: string | undefined;
    summaryMarkdown?: string | null | undefined;
    calendarEvent?: {
        title: string | null;
        startTime: string | null;
        endTime: string | null;
        invitees: string[];
        organiser: string | null;
        calendarEventId: string | null;
    } | null | undefined;
    folders?: {
        name: string;
        id: string;
    }[] | undefined;
    transcript?: {
        text: string;
        source: "microphone" | "speaker";
        startTime: string;
        endTime: string;
        speakerLabel: string | null;
    }[] | null | undefined;
}>]>;
export type GranolaParams = z.output<typeof GranolaParamsSchema>;
export type GranolaParamsInput = z.input<typeof GranolaParamsSchema>;
export type GranolaResult = z.output<typeof GranolaResultSchema>;
export type GranolaListNotesParams = Extract<GranolaParams, {
    operation: 'list_notes';
}>;
export type GranolaGetNoteParams = Extract<GranolaParams, {
    operation: 'get_note';
}>;
export type GranolaSection = z.output<typeof SectionSchema>;
export type GranolaNoteSummary = z.output<typeof GranolaNoteSummarySchema>;
export type GranolaNoteFields = z.output<typeof GranolaNoteFieldsSchema>;
export type GranolaUser = z.output<typeof GranolaUserSchema>;
export type GranolaCalendarEvent = z.output<typeof GranolaCalendarEventSchema>;
export type GranolaFolder = z.output<typeof GranolaFolderSchema>;
export type GranolaTranscriptEntry = z.output<typeof GranolaTranscriptEntrySchema>;
export {};
//# sourceMappingURL=granola.schema.d.ts.map