import { AiContextMetadata } from '../../internal-common/src/public-types/ai-agent.public-types';
/**
 * Response to a request to get the access token for a personal storage service.
 * @category Personal Storage
 */
export interface PsGetAccessTokenResponse {
    /** The access token for the personal storage service. */
    accessToken: string;
    /** The expiration time of the access token. */
    expirationTime: Date;
}
/**
 * The type of a document in personal storage.
 * @category Personal Storage
 */
export type PsDocumentType = 'file' | 'folder';
/**
 * A document indexed for AI processing (as part of the personal storage connector).
 * @category Personal Storage
 */
export interface PsIndexedDocument {
    /** The ID of the document. */
    id: string;
    /** The name of the document. */
    name: string;
    /** The type of the document (file or folder). */
    type: PsDocumentType;
    /** Metadata stored about the document */
    metadata: AiContextMetadata;
    /** The ID of the parent folder of the document. */
    folderDocumentId?: string;
}
/**
 * Client to handle personal storage integrations such as Google Drive or Microsoft OneDrive.
 * Provides methods for saving authentication tokens, indexing documents or folders for AI processing,
 * and unindexing documents from AI processing.
 * @category Personal Storage
 */
export declare class PersonalStorageClient {
    private readonly integrationId;
    private readonly rpcManager;
    /**
     * Saves an authentication token for the personal storage service.
     *
     * @param authCode - The authorization code obtained from the OAuth flow for the personal storage service.
     * @param identifier - A user-provided identifier (usually a user ID) that will be associated with the token.
     * @returns A promise that resolves with the access token and expiration time.
     */
    saveAuthCode(authCode: string, identifier: string): Promise<PsGetAccessTokenResponse>;
    /**
     * Retrieves an access token for the personal storage service.
     *
     * @param identifier - A user-provided identifier (usually a user ID) that is associated with the token.
     * @returns A promise that resolves with the access token and expiration time.
     */
    getAccessToken(identifier: string): Promise<PsGetAccessTokenResponse>;
    /**
     * Indexes a document or folder for AI processing.
     *
     * @param documentOrFolderId - The ID of the document or folder to be indexed.
     * @param identifier - A user-provided identifier (usually a user ID) that will be associated with the document.
     * @param agentId - The agent ID for the AI processing configuration.
     * @param metadata - Metadata to include with the index
     * @returns A promise that resolves when the document or folder is successfully indexed.
     */
    indexDocumentOrFolder(documentOrFolderId: string, identifier: string, agentId: string, metadata?: AiContextMetadata): Promise<void>;
    /**
     * Lists all documents or folders that have been indexed for AI processing.
     *
     * @param identifier - A user-provided identifier (usually a user ID) associated with the indexed documents.
     * @param agentId - The AI agent ID used when indexing the documents.
     * @param type - (Optional) The type of items to list: `'file'` or `'folder'`. If omitted, returns both.
     * @returns A promise that resolves with an array of indexed documents or folders.
     */
    listIndexedDocuments(identifier: string, agentId: string, type?: PsDocumentType): Promise<Array<PsIndexedDocument>>;
    /**
     * Unindexes a previously indexed document, removing it from AI processing.
     *
     * @param documentId - The ID of the document to be unindexed.
     * @param identifier - A user-provided identifier (usually a user ID) that was associated with the document.
     * @param agentId - The agent ID for the AI processing configuration.
     * @returns A promise that resolves when the document is successfully unindexed.
     */
    unindexDocument(documentId: string, identifier: string, agentId: string): Promise<void>;
}
