/**
 * # Meetings SDK namespace (admin surface)
 *
 * ## PHI and encryption at rest (post PR-A)
 *
 * All free-text and free-form fields on the three Meetings resources are
 * PHI-class and are encrypted at rest with AES-256-GCM via AshCloak
 * (HKDF-SHA256 from the platform vault). Seven attributes are stored as
 * ciphertext at the database layer:
 *
 * | Resource             | Field            | Default response                       |
 * |----------------------|------------------|----------------------------------------|
 * | meetings.meetings    | summary_text     | decrypted                              |
 * | meetings.meetings    | key_topics       | decrypted                              |
 * | meetings.meetings    | decisions        | decrypted                              |
 * | meetings.meetings    | attendees        | decrypted                              |
 * | meetings.transcripts | transcript_text  | OMITTED — opt-in via sparse fieldset   |
 * | meetings.transcripts | segments         | OMITTED — opt-in via sparse fieldset   |
 * | meetings.actionItems | task_text        | decrypted                              |
 *
 * `MeetingTranscript` PHI requires the sparse-fieldset opt-in. Use the
 * `includePhi: true` flag on `transcripts.list` / `transcripts.get` (which
 * injects `fields[meeting-transcript]=transcript_text,segments`) or send
 * the query parameter directly. Sorting / filtering / aggregating on
 * encrypted fields is not supported.
 *
 * ## Capability & error codes
 *
 * Capability-gated on `:meeting_intelligence`. ISV-admin keys (`sk_srv_`)
 * authorize via `meetings:read` and `meetings:write` scopes.
 *
 * - `meeting_intelligence_capability_disabled` (HTTP 403) — surfaced by
 *   every facade-dispatch endpoint and propagates to read / write
 *   endpoints when the Application has not enabled
 *   `:meeting_intelligence`. Error body shape:
 *   `{ errors: [{ code, detail, status: "403" }] }`.
 */
import type { Meeting, MeetingTranscript, MeetingActionItem } from "../_internal/types.gen";
import type { RequestOptions } from "../base-client";
import { RequestBuilder } from "../request-builder";
/**
 * Per-attendee metadata. PHI — the parent `attendees` map is encrypted at
 * rest via AshCloak. The shape is server-validated by `ValidAttendees`
 * (max 1000 entries; key length <= 254; value length <= 200). All members
 * are optional; only the email key is required.
 */
export type MeetingAttendee = {
    /** Display name of the attendee. */
    name?: string;
    /** Free-form role string (e.g., "host", "presenter"). */
    role?: string;
    /** Whether the attendee is optional for the meeting. */
    optional?: boolean;
    /** RSVP / response status (e.g., "accepted", "declined", "tentative", "needs_action"). */
    response_status?: string;
};
/** Attributes accepted when creating a Meeting (admin surface). */
export type CreateMeetingAttributes = {
    source_system: "microsoft_365" | "google_calendar" | "manual";
    source_id: string;
    title: string;
    status?: "scheduled" | "in_progress" | "completed" | "cancelled";
    start_time?: string | null;
    end_time?: string | null;
    organizer_email?: string | null;
    /**
     * Map of attendee email -> attendee metadata. PHI — encrypted at rest
     * (AshCloak). Server-side validated for shape and size.
     */
    attendees?: Record<string, MeetingAttendee>;
    join_url?: string | null;
    location?: string | null;
    /** ISV-defined freeform metadata. */
    custom_fields?: Record<string, unknown>;
    external_url?: string | null;
};
/** Attributes accepted when updating a Meeting (admin surface, all optional). */
export type UpdateMeetingAttributes = {
    title?: string;
    status?: "scheduled" | "in_progress" | "completed" | "cancelled";
    start_time?: string | null;
    end_time?: string | null;
    organizer_email?: string | null;
    /**
     * Map of attendee email -> attendee metadata. PHI — encrypted at rest
     * (AshCloak). PATCH semantics: omit the key to leave the stored value
     * unchanged; send `{}` to replace with an empty map. The server replaces
     * (not merges) the persisted value when this attribute is present.
     */
    attendees?: Record<string, MeetingAttendee>;
    join_url?: string | null;
    location?: string | null;
    /**
     * ISV-defined freeform metadata. PATCH semantics: omit to leave the
     * stored value unchanged; send `{}` to replace with an empty map.
     */
    custom_fields?: Record<string, unknown>;
    external_url?: string | null;
};
/**
 * Admin surface for the Meetings domain — full CRUD on Meeting plus read
 * access to MeetingTranscript and MeetingActionItem. Capability-gated on
 * `:meeting_intelligence`. ISV-admin keys (`sk_srv_`) authorize via
 * `meetings:read` and `meetings:write` scopes.
 *
 * Sub-resources:
 * - `meetings` — Meeting aggregates. `summary_text` / `key_topics` /
 *   `decisions` are PHI-adjacent + system-stamped (LLM output of
 *   `:apply_processing`); `attendees` is PHI. All four are AshCloak-
 *   encrypted at rest and decrypted by default on read.
 * - `transcripts` — MeetingTranscript records (1:1 with Meeting).
 *   `transcript_text` and `segments` are PHI, encrypted at rest, and
 *   require sparse-fieldset opt-in via `includePhi: true`.
 * - `actionItems` — MeetingActionItem rows. `task_text` is PHI,
 *   encrypted at rest, decrypted on read.
 *
 * Sync, transcript upload, and processing flows are NOT exposed as SDK
 * methods — they reach end users via AshAi tools + the Meetings facade.
 * Every facade-dispatch endpoint can return HTTP 403 with code
 * `meeting_intelligence_capability_disabled` when the workspace's
 * Application lacks `:meeting_intelligence`.
 *
 * @example
 * ```typescript
 * const admin = new GptAdmin({ apiKey: "sk_srv_..." });
 *
 * // List meetings across the workspace
 * const meetings = await admin.meetings.meetings.list();
 *
 * // Create a manual meeting
 * const m = await admin.meetings.meetings.create({
 *   source_system: "manual",
 *   source_id: "manual-2026-001",
 *   title: "Quarterly Planning",
 * });
 *
 * // List action items
 * const items = await admin.meetings.actionItems.list();
 *
 * // Opt in to PHI on a transcript read
 * const t = await admin.meetings.transcripts.get(transcriptId, {
 *   includePhi: true,
 * });
 * ```
 */
export declare function createMeetingsNamespace(rb: RequestBuilder): {
    /**
     * Meeting aggregates — admin surface (full CRUD).
     */
    meetings: {
        /**
         * List Meetings across the workspace (admin scope).
         *
         * @param options - Optional pagination and request settings.
         * @returns A promise resolving to Meeting records.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         */
        list: (options?: {
            page?: number;
            pageSize?: number;
        } & RequestOptions) => Promise<Meeting[]>;
        /**
         * Fetch a Meeting by id.
         *
         * @param id - Meeting id.
         * @param options - Optional request settings.
         * @returns A promise resolving to the Meeting.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         */
        get: (id: string, options?: RequestOptions) => Promise<Meeting>;
        /**
         * Create a manual Meeting. The `source_system` MUST be `"manual"` for
         * caller-initiated creates — Microsoft 365 and Google Calendar rows
         * arrive via the connector sync pipeline (`:sync_upsert`, system-only).
         *
         * Body shape: `{ data: { type: "meeting", attributes: {...} } }`.
         *
         * @param attributes - Accepted Meeting create attributes.
         * @param options - Optional request settings.
         * @returns A promise resolving to the created Meeting.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         *
         * @example
         * ```typescript
         * await admin.meetings.meetings.create({
         *   source_system: "manual",
         *   source_id: "manual-1",
         *   title: "Standup",
         *   status: "scheduled",
         * });
         * ```
         */
        create: (attributes: CreateMeetingAttributes, options?: RequestOptions) => Promise<Meeting>;
        /**
         * Update mutable Meeting fields.
         *
         * Note: `attendees` and `custom_fields` use REPLACE semantics on
         * PATCH (omit to leave unchanged; send `{}` to clear).
         *
         * @param id - Meeting id.
         * @param attributes - Accepted Meeting update attributes.
         * @param options - Optional request settings.
         * @returns A promise resolving to the updated Meeting.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         *
         * @example
         * ```typescript
         * await admin.meetings.meetings.update(meetingId, {
         *   status: "completed",
         *   end_time: "2026-05-10T16:30:00Z",
         * });
         * ```
         */
        update: (id: string, attributes: UpdateMeetingAttributes, options?: RequestOptions) => Promise<Meeting>;
        /**
         * Delete a Meeting. Cascades to its MeetingTranscript and
         * MeetingActionItem rows at the FK level. A single
         * `meetings.meeting.deleted` event covers the entire subtree — no
         * per-child events fire on cascade.
         *
         * @param id - Meeting id.
         * @param options - Optional request settings.
         * @returns A promise resolving to `true` on success.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         *
         * @example
         * ```typescript
         * await admin.meetings.meetings.delete(meetingId);
         * ```
         */
        delete: (id: string, options?: RequestOptions) => Promise<true>;
    };
    /**
     * MeetingTranscript records — one per Meeting.
     *
     * **PHI default-deny contract (post PR-A):** `transcript_text` and
     * `segments` are encrypted at rest via AshCloak and are NOT returned
     * by default. Use `includePhi: true` on `list` / `get` to opt in via
     * sparse fieldsets (`fields[meeting-transcript]=transcript_text,segments`).
     * Downstream PHI handling (storage, redaction, retention) is the
     * ISV's responsibility under their own HIPAA / data-protection
     * controls.
     */
    transcripts: {
        /**
         * List MeetingTranscript records across the workspace.
         *
         * Pass `includePhi: true` to opt in to the AshCloak-encrypted PHI
         * fields (`transcript_text`, `segments`) via sparse fieldset.
         *
         * @param options - Optional pagination, PHI opt-in, and request settings.
         * @returns A promise resolving to MeetingTranscript records.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         */
        list: (options?: {
            page?: number;
            pageSize?: number;
            includePhi?: boolean;
        } & RequestOptions) => Promise<MeetingTranscript[]>;
        /**
         * Fetch a MeetingTranscript by id.
         *
         * Pass `includePhi: true` to opt in to the AshCloak-encrypted PHI
         * fields (`transcript_text`, `segments`) via sparse fieldset.
         *
         * @param id - MeetingTranscript id.
         * @param options - Optional PHI opt-in and request settings.
         * @returns A promise resolving to the MeetingTranscript.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         *
         * @example
         * ```typescript
         * const t = await admin.meetings.transcripts.get(id, {
         *   includePhi: true,
         * });
         * ```
         */
        get: (id: string, options?: RequestOptions & {
            includePhi?: boolean;
        }) => Promise<MeetingTranscript>;
    };
    /**
     * MeetingActionItem records — typed action items extracted by the
     * `MeetingProcessor` LLM pipeline. `task_text` is PHI (may contain
     * participant names), encrypted at rest via AshCloak, decrypted on
     * read.
     */
    actionItems: {
        /**
         * List MeetingActionItem records across the workspace.
         *
         * @param options - Optional pagination and request settings.
         * @returns A promise resolving to MeetingActionItem records.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         */
        list: (options?: {
            page?: number;
            pageSize?: number;
        } & RequestOptions) => Promise<MeetingActionItem[]>;
        /**
         * Fetch a MeetingActionItem by id.
         *
         * @param id - MeetingActionItem id.
         * @param options - Optional request settings.
         * @returns A promise resolving to the MeetingActionItem.
         * @throws GptApiError with code
         *   `meeting_intelligence_capability_disabled` (HTTP 403) when the
         *   workspace's Application lacks the capability.
         */
        get: (id: string, options?: RequestOptions) => Promise<MeetingActionItem>;
    };
};
/** Public type alias for the admin meetings namespace return shape. */
export type MeetingsAPI = ReturnType<typeof createMeetingsNamespace>;
//# sourceMappingURL=meetings.d.ts.map