import { APIResource } from "../../../../core/resource.js";
import * as DocumentsAPI from "./documents.js";
import { DocumentCreateParams, DocumentCreateResponse, DocumentDeleteParams, DocumentListParams, Documents } from "./documents.js";
import { APIPromise } from "../../../../core/api-promise.js";
import { Cursor, type CursorParams, PagePromise } from "../../../../core/pagination.js";
import { RequestOptions } from "../../../../internal/request-options.js";
export declare class KnowledgeBases extends APIResource {
    documents: DocumentsAPI.Documents;
    /**
     * Create a new knowledge base for an agent.
     *
     * @example
     * ```ts
     * const knowledgeBase =
     *   await client.senders.agent.knowledgeBases.create(
     *     'senderId',
     *     {
     *       name: 'Product FAQ',
     *       description:
     *         'Frequently asked questions about our products',
     *     },
     *   );
     * ```
     */
    create(senderID: string, body: KnowledgeBaseCreateParams, options?: RequestOptions): APIPromise<KnowledgeBaseCreateResponse>;
    /**
     * Get a specific knowledge base.
     *
     * @example
     * ```ts
     * const knowledgeBase =
     *   await client.senders.agent.knowledgeBases.retrieve(
     *     'kbId',
     *     { senderId: 'senderId' },
     *   );
     * ```
     */
    retrieve(kbID: string, params: KnowledgeBaseRetrieveParams, options?: RequestOptions): APIPromise<KnowledgeBaseRetrieveResponse>;
    /**
     * Update a knowledge base.
     *
     * @example
     * ```ts
     * const knowledgeBase =
     *   await client.senders.agent.knowledgeBases.update('kbId', {
     *     senderId: 'senderId',
     *   });
     * ```
     */
    update(kbID: string, params: KnowledgeBaseUpdateParams, options?: RequestOptions): APIPromise<KnowledgeBaseUpdateResponse>;
    /**
     * List knowledge bases for an agent.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const agentKnowledgeBase of client.senders.agent.knowledgeBases.list(
     *   'senderId',
     * )) {
     *   // ...
     * }
     * ```
     */
    list(senderID: string, query?: KnowledgeBaseListParams | null | undefined, options?: RequestOptions): PagePromise<AgentKnowledgeBasesCursor, AgentKnowledgeBase>;
    /**
     * Delete a knowledge base and all its documents.
     *
     * @example
     * ```ts
     * await client.senders.agent.knowledgeBases.delete('kbId', {
     *   senderId: 'senderId',
     * });
     * ```
     */
    delete(kbID: string, params: KnowledgeBaseDeleteParams, options?: RequestOptions): APIPromise<void>;
}
export type AgentKnowledgeBasesCursor = Cursor<AgentKnowledgeBase>;
export type AgentDocumentsCursor = Cursor<AgentDocument>;
export interface AgentDocument {
    id: string;
    /**
     * Number of chunks created from this document.
     */
    chunkCount: number;
    /**
     * Length of the document content in characters.
     */
    contentLength: number;
    createdAt: string;
    /**
     * Whether the document has been processed for RAG.
     */
    isProcessed: boolean;
    knowledgeBaseId: string;
    title: string;
    updatedAt: string;
}
export interface AgentKnowledgeBase {
    id: string;
    agentId: string;
    createdAt: string;
    documentCount: number;
    name: string;
    totalChunks: number;
    updatedAt: string;
    description?: string | null;
}
export interface KnowledgeBaseCreateResponse {
    knowledgeBase: AgentKnowledgeBase;
}
export interface KnowledgeBaseRetrieveResponse {
    knowledgeBase: AgentKnowledgeBase;
}
export interface KnowledgeBaseUpdateResponse {
    knowledgeBase: AgentKnowledgeBase;
}
export interface KnowledgeBaseCreateParams {
    name: string;
    description?: string;
}
export interface KnowledgeBaseRetrieveParams {
    senderId: string;
}
export interface KnowledgeBaseUpdateParams {
    /**
     * Path param
     */
    senderId: string;
    /**
     * Body param
     */
    description?: string | null;
    /**
     * Body param
     */
    name?: string;
}
export interface KnowledgeBaseListParams extends CursorParams {
}
export interface KnowledgeBaseDeleteParams {
    senderId: string;
}
export declare namespace KnowledgeBases {
    export { type AgentDocument as AgentDocument, type AgentKnowledgeBase as AgentKnowledgeBase, type KnowledgeBaseCreateResponse as KnowledgeBaseCreateResponse, type KnowledgeBaseRetrieveResponse as KnowledgeBaseRetrieveResponse, type KnowledgeBaseUpdateResponse as KnowledgeBaseUpdateResponse, type AgentKnowledgeBasesCursor as AgentKnowledgeBasesCursor, type KnowledgeBaseCreateParams as KnowledgeBaseCreateParams, type KnowledgeBaseRetrieveParams as KnowledgeBaseRetrieveParams, type KnowledgeBaseUpdateParams as KnowledgeBaseUpdateParams, type KnowledgeBaseListParams as KnowledgeBaseListParams, type KnowledgeBaseDeleteParams as KnowledgeBaseDeleteParams, };
    export { Documents as Documents, type DocumentCreateResponse as DocumentCreateResponse, type DocumentCreateParams as DocumentCreateParams, type DocumentListParams as DocumentListParams, type DocumentDeleteParams as DocumentDeleteParams, };
}
//# sourceMappingURL=knowledge-bases.d.ts.map