import { CredentialType } from '@bubblelab/shared-schemas';
import { ServiceBubble } from '../../../types/service-bubble-class.js';
import type { BubbleContext } from '../../../types/bubble.js';
import { type GranolaParamsInput, type GranolaResult } from './granola.schema.js';
/**
 * GranolaBubble - Integration with Granola meeting notes API
 *
 * Provides read-only operations for accessing Granola meeting notes:
 * - List notes with pagination and date filtering
 * - Get note details with optional transcript
 *
 * @example
 * ```typescript
 * // List recent notes
 * const result = await new GranolaBubble({
 *   operation: 'list_notes',
 *   page_size: 10,
 * }).action();
 *
 * // Get a specific note with transcript
 * const note = await new GranolaBubble({
 *   operation: 'get_note',
 *   note_id: 'not_1d3tmYTlCICgjy',
 *   include_transcript: true,
 * }).action();
 * ```
 */
export declare class GranolaBubble<T extends GranolaParamsInput = GranolaParamsInput> extends ServiceBubble<T, Extract<GranolaResult, {
    operation: T['operation'];
}>> {
    static readonly service = "granola";
    static readonly authType: "apikey";
    static readonly bubbleName: "granola";
    static readonly type: "service";
    static readonly schema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodEffects<import("zod").ZodLiteral<"list_notes">, "list_notes", "list_notes">;
        created_before: import("zod").ZodOptional<import("zod").ZodString>;
        created_after: import("zod").ZodOptional<import("zod").ZodString>;
        updated_after: import("zod").ZodOptional<import("zod").ZodString>;
        cursor: import("zod").ZodOptional<import("zod").ZodString>;
        page_size: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "list_notes";
        page_size: number;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        cursor?: string | undefined;
        created_before?: string | undefined;
        created_after?: string | undefined;
        updated_after?: string | undefined;
    }, {
        operation: "list_notes";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        cursor?: string | undefined;
        page_size?: number | undefined;
        created_before?: string | undefined;
        created_after?: string | undefined;
        updated_after?: string | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodEffects<import("zod").ZodLiteral<"get_note">, "get_note", "get_note">;
        note_id: import("zod").ZodString;
        include_transcript: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "get_note";
        note_id: string;
        include_transcript: boolean;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        operation: "get_note";
        note_id: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        include_transcript?: boolean | undefined;
    }>]>;
    static readonly resultSchema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"list_notes">;
        success: import("zod").ZodBoolean;
        notes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            id: import("zod").ZodString;
            object: import("zod").ZodLiteral<"note">;
            title: import("zod").ZodNullable<import("zod").ZodString>;
            owner: import("zod").ZodObject<{
                name: import("zod").ZodNullable<import("zod").ZodString>;
                email: import("zod").ZodString;
            }, "strip", import("zod").ZodTypeAny, {
                name: string | null;
                email: string;
            }, {
                name: string | null;
                email: string;
            }>;
            created_at: import("zod").ZodString;
            updated_at: import("zod").ZodString;
        }, "strip", import("zod").ZodTypeAny, {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            updated_at: string;
        }, {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            updated_at: string;
        }>, "many">>;
        hasMore: import("zod").ZodOptional<import("zod").ZodBoolean>;
        cursor: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "list_notes";
        cursor?: string | null | undefined;
        notes?: {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            updated_at: string;
        }[] | undefined;
        hasMore?: boolean | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "list_notes";
        cursor?: string | null | undefined;
        notes?: {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            updated_at: string;
        }[] | undefined;
        hasMore?: boolean | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_note">;
        success: import("zod").ZodBoolean;
        note: import("zod").ZodOptional<import("zod").ZodObject<{
            id: import("zod").ZodString;
            object: import("zod").ZodLiteral<"note">;
            title: import("zod").ZodNullable<import("zod").ZodString>;
            owner: import("zod").ZodObject<{
                name: import("zod").ZodNullable<import("zod").ZodString>;
                email: import("zod").ZodString;
            }, "strip", import("zod").ZodTypeAny, {
                name: string | null;
                email: string;
            }, {
                name: string | null;
                email: string;
            }>;
            created_at: import("zod").ZodString;
            updated_at: import("zod").ZodString;
        } & {
            calendar_event: import("zod").ZodNullable<import("zod").ZodObject<{
                event_title: import("zod").ZodNullable<import("zod").ZodString>;
                invitees: import("zod").ZodArray<import("zod").ZodObject<{
                    email: import("zod").ZodString;
                }, "strip", import("zod").ZodTypeAny, {
                    email: string;
                }, {
                    email: string;
                }>, "many">;
                organiser: import("zod").ZodNullable<import("zod").ZodString>;
                calendar_event_id: import("zod").ZodNullable<import("zod").ZodString>;
                scheduled_start_time: import("zod").ZodNullable<import("zod").ZodString>;
                scheduled_end_time: import("zod").ZodNullable<import("zod").ZodString>;
            }, "strip", import("zod").ZodTypeAny, {
                event_title: string | null;
                invitees: {
                    email: string;
                }[];
                organiser: string | null;
                calendar_event_id: string | null;
                scheduled_start_time: string | null;
                scheduled_end_time: string | null;
            }, {
                event_title: string | null;
                invitees: {
                    email: string;
                }[];
                organiser: string | null;
                calendar_event_id: string | null;
                scheduled_start_time: string | null;
                scheduled_end_time: string | null;
            }>>;
            attendees: import("zod").ZodArray<import("zod").ZodObject<{
                name: import("zod").ZodNullable<import("zod").ZodString>;
                email: import("zod").ZodString;
            }, "strip", import("zod").ZodTypeAny, {
                name: string | null;
                email: string;
            }, {
                name: string | null;
                email: string;
            }>, "many">;
            folder_membership: import("zod").ZodArray<import("zod").ZodObject<{
                id: import("zod").ZodString;
                object: import("zod").ZodLiteral<"folder">;
                name: import("zod").ZodString;
            }, "strip", import("zod").ZodTypeAny, {
                object: "folder";
                name: string;
                id: string;
            }, {
                object: "folder";
                name: string;
                id: string;
            }>, "many">;
            summary_text: import("zod").ZodString;
            summary_markdown: import("zod").ZodNullable<import("zod").ZodString>;
            transcript: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
                speaker: import("zod").ZodObject<{
                    source: import("zod").ZodEnum<["microphone", "speaker"]>;
                    diarization_label: import("zod").ZodOptional<import("zod").ZodString>;
                }, "strip", import("zod").ZodTypeAny, {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                }, {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                }>;
                text: import("zod").ZodString;
                start_time: import("zod").ZodString;
                end_time: import("zod").ZodString;
            }, "strip", import("zod").ZodTypeAny, {
                text: string;
                speaker: {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                };
                start_time: string;
                end_time: string;
            }, {
                text: string;
                speaker: {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                };
                start_time: string;
                end_time: string;
            }>, "many">>;
        }, "strip", import("zod").ZodTypeAny, {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            attendees: {
                name: string | null;
                email: string;
            }[];
            updated_at: string;
            calendar_event: {
                event_title: string | null;
                invitees: {
                    email: string;
                }[];
                organiser: string | null;
                calendar_event_id: string | null;
                scheduled_start_time: string | null;
                scheduled_end_time: string | null;
            } | null;
            folder_membership: {
                object: "folder";
                name: string;
                id: string;
            }[];
            summary_text: string;
            summary_markdown: string | null;
            transcript: {
                text: string;
                speaker: {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                };
                start_time: string;
                end_time: string;
            }[] | null;
        }, {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            attendees: {
                name: string | null;
                email: string;
            }[];
            updated_at: string;
            calendar_event: {
                event_title: string | null;
                invitees: {
                    email: string;
                }[];
                organiser: string | null;
                calendar_event_id: string | null;
                scheduled_start_time: string | null;
                scheduled_end_time: string | null;
            } | null;
            folder_membership: {
                object: "folder";
                name: string;
                id: string;
            }[];
            summary_text: string;
            summary_markdown: string | null;
            transcript: {
                text: string;
                speaker: {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                };
                start_time: string;
                end_time: string;
            }[] | null;
        }>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "get_note";
        note?: {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            attendees: {
                name: string | null;
                email: string;
            }[];
            updated_at: string;
            calendar_event: {
                event_title: string | null;
                invitees: {
                    email: string;
                }[];
                organiser: string | null;
                calendar_event_id: string | null;
                scheduled_start_time: string | null;
                scheduled_end_time: string | null;
            } | null;
            folder_membership: {
                object: "folder";
                name: string;
                id: string;
            }[];
            summary_text: string;
            summary_markdown: string | null;
            transcript: {
                text: string;
                speaker: {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                };
                start_time: string;
                end_time: string;
            }[] | null;
        } | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "get_note";
        note?: {
            object: "note";
            title: string | null;
            id: string;
            created_at: string;
            owner: {
                name: string | null;
                email: string;
            };
            attendees: {
                name: string | null;
                email: string;
            }[];
            updated_at: string;
            calendar_event: {
                event_title: string | null;
                invitees: {
                    email: string;
                }[];
                organiser: string | null;
                calendar_event_id: string | null;
                scheduled_start_time: string | null;
                scheduled_end_time: string | null;
            } | null;
            folder_membership: {
                object: "folder";
                name: string;
                id: string;
            }[];
            summary_text: string;
            summary_markdown: string | null;
            transcript: {
                text: string;
                speaker: {
                    source: "microphone" | "speaker";
                    diarization_label?: string | undefined;
                };
                start_time: string;
                end_time: string;
            }[] | null;
        } | undefined;
    }>]>;
    static readonly shortDescription = "Granola meeting notes and transcription integration";
    static readonly longDescription = "\n    Granola is an AI meeting notes tool that captures and summarizes meetings.\n    This bubble provides read-only access to:\n    - List meeting notes with filtering by creation/update dates\n    - Paginate through notes using cursor-based pagination\n    - Get full note details including summaries, attendees, and calendar events\n    - Optionally retrieve meeting transcripts\n\n    Authentication:\n    - Uses Bearer token (API key) from Granola Settings > API\n    - Requires Business or Enterprise plan for personal keys\n    - Enterprise keys access all Team space notes\n\n    Rate Limits:\n    - 25 request burst capacity\n    - 5 requests/second sustained rate\n  ";
    static readonly alias = "granola-notes";
    constructor(params?: T, context?: BubbleContext);
    protected chooseCredential(): string | undefined;
    testCredential(): Promise<boolean>;
    protected performAction(context?: BubbleContext): Promise<Extract<GranolaResult, {
        operation: T['operation'];
    }>>;
    private listNotes;
    private getNote;
    private makeGranolaRequest;
}
//# sourceMappingURL=granola.d.ts.map