import type { UserProfile } from "../_internal/types.gen";
import type { RequestOptions } from "../base-client";
import { RequestBuilder } from "../request-builder";
/** Attributes accepted when creating a user profile (admin). Mirrors resource accept list. */
/**
 * Legal document types accepted by `admin.userProfiles.acceptLegalDocument`.
 * Mirrors the platform `LegalAcceptance.document_type` constraint.
 */
export type LegalDocumentType = "terms_of_service" | "privacy_policy" | "baa" | "dpa" | "scc" | "npp" | "security_policy" | "incident_response_plan" | "contingency_plan" | "access_control_policy" | "risk_management_plan" | "training_policy" | "sanction_policy" | "breach_notification_policy" | "system_activity_review" | "data_retention_policy" | "minimum_necessary_policy" | "authorization_form";
export type CreateUserProfileAttributes = {
    /** Required on admin surface: which user owns this profile. */
    user_id: string;
    first_name?: string;
    last_name?: string;
    avatar_url?: string;
    bio?: string;
    social_links?: Record<string, string>;
    preferences?: Record<string, unknown>;
};
/** Attributes accepted when updating a user profile (admin). Mirrors resource accept list. */
export type UpdateUserProfileAttributes = {
    first_name?: string;
    last_name?: string;
    avatar_url?: string;
    bio?: string;
    social_links?: Record<string, string>;
    preferences?: Record<string, unknown>;
};
/**
 * Manages user profiles across all tenants (admin).
 *
 * Provides platform-level profile administration including ToS acceptance,
 * welcome/announcement dismissals, and profile CRUD.
 */
export declare function createUserProfilesNamespace(rb: RequestBuilder): {
    /**
     * Delete a user profile.
     * @param id - User profile ID.
     * @param options - Optional request options.
     * @returns `true` when deletion succeeds.
     * @example
     * ```typescript
     * await admin.userProfiles.delete("profile_123");
     * ```
     */
    delete: (id: string, options?: RequestOptions) => Promise<true>;
    /**
     * List user profiles with optional pagination.
     * @param options - Optional page, pageSize, and request options.
     * @returns Array of user profiles.
     * @example
     * ```typescript
     * const profiles = await admin.userProfiles.list({ page: 1, pageSize: 25 });
     * ```
     */
    list: (options?: {
        page?: number;
        pageSize?: number;
    } & RequestOptions) => Promise<UserProfile[]>;
    /**
     * List all user profiles by fetching every page.
     * @param options - Optional request options.
     * @returns Complete array of user profiles.
     * @example
     * ```typescript
     * const profiles = await admin.userProfiles.listAll();
     * ```
     */
    listAll: (options?: RequestOptions) => Promise<UserProfile[]>;
    /**
     * Get a user profile by ID.
     * @param id - User profile ID.
     * @param options - Optional request options.
     * @returns The requested user profile.
     * @example
     * ```typescript
     * const profile = await admin.userProfiles.get("profile_123");
     * ```
     */
    get: (id: string, options?: RequestOptions) => Promise<UserProfile>;
    /**
     * Create a user profile.
     * @param attributes.user_id - Required target user that owns this profile; admin keys do not infer it from the actor.
     * @param attributes - Profile attributes to create.
     * @param options - Optional request options.
     * @returns The created user profile.
     * @example
     * ```typescript
     * await admin.userProfiles.create({ user_id: "user_123", first_name: "Ada" });
     * ```
     */
    create: (attributes: CreateUserProfileAttributes, options?: RequestOptions) => Promise<UserProfile>;
    /**
     * Update a user profile.
     * @param id - User profile ID.
     * @param attributes - Profile attributes to update.
     * @param options - Optional request options.
     * @returns The updated user profile.
     * @example
     * ```typescript
     * await admin.userProfiles.update("profile_123", { first_name: "Ada" });
     * ```
     */
    update: (id: string, attributes: UpdateUserProfileAttributes, options?: RequestOptions) => Promise<UserProfile>;
    /**
     * Get the current user's profile.
     * @param options - Optional request options.
     * @returns The current caller's user profile.
     * @example
     * ```typescript
     * const profile = await admin.userProfiles.me();
     * ```
     */
    me: (options?: RequestOptions) => Promise<UserProfile>;
    /**
     * Accept a legal document at a given version. Generic over document
     * type — same shape for ToS, Privacy Policy, BAA, DPA, and any other
     * document the platform tracks. Records a `LegalAcceptance` row scoped
     * to the calling application; for `terms_of_service` the platform also
     * auto-grants `:ai_document_processing` consent.
     *
     * Replaces the legacy `acceptTos(id, version, ppVersion?)`. Accept one
     * document per call. RFI-C5-R.
     *
     * @param id - Profile ID
     * @param documentType - Legal document type (e.g. "terms_of_service",
     *                       "privacy_policy", "baa")
     * @param version - The active version of that document
     * @param options - Optional request options.
     * @returns The updated user profile.
     * @example
     * ```typescript
     * await admin.userProfiles.acceptLegalDocument(
     *   "profile_123",
     *   "terms_of_service",
     *   "2026-04-01",
     * );
     * ```
     */
    acceptLegalDocument: (id: string, documentType: LegalDocumentType, version: string, options?: RequestOptions) => Promise<UserProfile>;
    /**
     * Dismiss the welcome message for this profile.
     * @param id - User profile ID.
     * @param options - Optional request options.
     * @returns The updated user profile.
     * @example
     * ```typescript
     * await admin.userProfiles.dismissWelcome("profile_123");
     * ```
     */
    dismissWelcome: (id: string, options?: RequestOptions) => Promise<UserProfile>;
    /**
     * Dismiss the announcement banner for this profile.
     * @param id - User profile ID.
     * @param options - Optional request options.
     * @returns The updated user profile.
     * @example
     * ```typescript
     * await admin.userProfiles.dismissAnnouncement("profile_123");
     * ```
     */
    dismissAnnouncement: (id: string, options?: RequestOptions) => Promise<UserProfile>;
};
//# sourceMappingURL=userProfiles.d.ts.map