import * as _pinecone_database_pinecone from '@pinecone-database/pinecone';
import { PineconeConfiguration, CreateIndexOptions } from '@pinecone-database/pinecone';
import * as _genkit_ai_ai_retriever from '@genkit-ai/ai/retriever';
import { z, Genkit } from 'genkit';
import { GenkitPlugin } from 'genkit/plugin';
import { EmbedderArgument } from 'genkit/embedder';

/**
 * pineconeRetrieverRef function creates a retriever for Pinecone.
 * @param params The params for the new Pinecone retriever
 * @param params.indexId The indexId for the Pinecone retriever
 * @param params.displayName  A display name for the retriever.
If not specified, the default label will be `Pinecone - <indexId>`
 * @returns A reference to a Pinecone retriever.
 */
declare const pineconeRetrieverRef: (params: {
    indexId: string;
    displayName?: string;
}) => _genkit_ai_ai_retriever.RetrieverReference<z.ZodObject<z.objectUtil.extendShape<{
    k: z.ZodOptional<z.ZodNumber>;
}, {
    k: z.ZodNumber;
    namespace: z.ZodOptional<z.ZodString>;
    filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
    sparseVector: z.ZodOptional<z.ZodEffects<z.ZodObject<{
        indices: z.ZodArray<z.ZodNumber, "many">;
        values: z.ZodArray<z.ZodNumber, "many">;
    }, "strip", z.ZodTypeAny, {
        indices: number[];
        values: number[];
    }, {
        indices: number[];
        values: number[];
    }>, {
        indices: number[];
        values: number[];
    }, {
        indices: number[];
        values: number[];
    }>>;
}>, "strip", z.ZodTypeAny, {
    k: number;
    filter?: Record<string, any> | undefined;
    namespace?: string | undefined;
    sparseVector?: {
        indices: number[];
        values: number[];
    } | undefined;
}, {
    k: number;
    filter?: Record<string, any> | undefined;
    namespace?: string | undefined;
    sparseVector?: {
        indices: number[];
        values: number[];
    } | undefined;
}>>;
/**
 * pineconeIndexerRef function creates an indexer for Pinecone.
 * @param params The params for the new Pinecone indexer.
 * @param params.indexId The indexId for the Pinecone indexer.
 * @param params.displayName  A display name for the indexer.
If not specified, the default label will be `Pinecone - <indexId>`
 * @returns A reference to a Pinecone indexer.
 */
declare const pineconeIndexerRef: (params: {
    indexId: string;
    displayName?: string;
}) => _genkit_ai_ai_retriever.IndexerReference<z.ZodOptional<z.ZodObject<{
    namespace: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    namespace?: string | undefined;
}, {
    namespace?: string | undefined;
}>>>;
/**
 * Pinecone plugin that provides a Pinecone retriever and indexer
 * @param params An array of params to set up Pinecone retrievers and indexers
 * @param params.clientParams PineconeConfiguration containing the
PINECONE_API_KEY. If not set, the PINECONE_API_KEY environment variable will
be used instead.
 * @param params.indexId The name of the index
 * @param params.embedder The embedder to use for the indexer and retriever
 * @param params.embedderOptions  Options to customize the embedder
 * @returns The Pinecone Genkit plugin
 */
declare function pinecone<EmbedderCustomOptions extends z.ZodTypeAny>(params: {
    clientParams?: PineconeConfiguration;
    indexId: string;
    contentKey?: string;
    embedder: EmbedderArgument<EmbedderCustomOptions>;
    embedderOptions?: z.infer<EmbedderCustomOptions>;
}[]): GenkitPlugin;

/**
 * Configures a Pinecone retriever.
 * @param ai A Genkit instance
 * @param params The params for the retriever
 * @param params.indexId The name of the retriever
 * @param params.clientParams PineconeConfiguration containing the
PINECONE_API_KEY. If not set, the PINECONE_API_KEY environment variable will
be used instead.
 * @param params.textKey Deprecated. Please use contentKey.
 * @param params.contentKey The metadata key that contains the
content. If not specified, the value '_content' is used by default.
 * @param params.embedder The embedder to use for the retriever
 * @param params.embedderOptions  Options to customize the embedder
 * @returns A Pinecone retriever
 */
declare function configurePineconeRetriever<EmbedderCustomOptions extends z.ZodTypeAny>(ai: Genkit, params: {
    indexId: string;
    clientParams?: PineconeConfiguration;
    /**
     * @deprecated use contentKey instead.
     */
    textKey?: string;
    contentKey?: string;
    embedder: EmbedderArgument<EmbedderCustomOptions>;
    embedderOptions?: z.infer<EmbedderCustomOptions>;
}): _genkit_ai_ai_retriever.RetrieverAction<z.ZodObject<z.objectUtil.extendShape<{
    k: z.ZodOptional<z.ZodNumber>;
}, {
    k: z.ZodNumber;
    namespace: z.ZodOptional<z.ZodString>;
    filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
    sparseVector: z.ZodOptional<z.ZodEffects<z.ZodObject<{
        indices: z.ZodArray<z.ZodNumber, "many">;
        values: z.ZodArray<z.ZodNumber, "many">;
    }, "strip", z.ZodTypeAny, {
        indices: number[];
        values: number[];
    }, {
        indices: number[];
        values: number[];
    }>, {
        indices: number[];
        values: number[];
    }, {
        indices: number[];
        values: number[];
    }>>;
}>, "strip", z.ZodTypeAny, {
    k: number;
    filter?: Record<string, any> | undefined;
    namespace?: string | undefined;
    sparseVector?: {
        indices: number[];
        values: number[];
    } | undefined;
}, {
    k: number;
    filter?: Record<string, any> | undefined;
    namespace?: string | undefined;
    sparseVector?: {
        indices: number[];
        values: number[];
    } | undefined;
}>>;
/**
 * Configures a Pinecone indexer.
 * @param ai A Genkit instance
 * @param params The params for the indexer
 * @param params.indexId The name of the indexer
 * @param params.clientParams PineconeConfiguration containing the
PINECONE_API_KEY. If not set, the PINECONE_API_KEY environment variable will
be used instead.
 * @param params.textKey Deprecated. Please use contentKey.
 * @param params.contentKey The metadata key that contains the
content. If not specified, the value '_content' is used by default.
 * @param params.embedder The embedder to use for the retriever
 * @param params.embedderOptions  Options to customize the embedder
 * @returns A Genkit indexer
 */
declare function configurePineconeIndexer<EmbedderCustomOptions extends z.ZodTypeAny>(ai: Genkit, params: {
    indexId: string;
    clientParams?: PineconeConfiguration;
    /**
     * @deprecated use contentKey instead.
     */
    textKey?: string;
    contentKey?: string;
    embedder: EmbedderArgument<EmbedderCustomOptions>;
    embedderOptions?: z.infer<EmbedderCustomOptions>;
}): _genkit_ai_ai_retriever.IndexerAction<z.ZodOptional<z.ZodObject<{
    namespace: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    namespace?: string | undefined;
}, {
    namespace?: string | undefined;
}>>>;
/**
 * Helper function for creating a Pinecone index.
 * @param params The params for creating a Pinecone index
 * @param params.clientParams The params to initialize Pinecone.
 * @param params.options The options for creating the index.
 * @returns A Pinecone index.
 */
declare function createPineconeIndex(params: {
    clientParams?: PineconeConfiguration;
    options: CreateIndexOptions;
}): Promise<void | _pinecone_database_pinecone.IndexModel>;
/**
 * Helper function to describe a Pinecone index. Use it to check if a newly created index is ready for use.
 * @param params The params for describing a Pinecone index.
 * @param params.clientParams The params to initialize Pinecone.
 * @param params.name The name of the Pinecone index to describe.
 * @return A description of the Pinecone index.
 */
declare function describePineconeIndex(params: {
    clientParams?: PineconeConfiguration;
    name: string;
}): Promise<_pinecone_database_pinecone.IndexModel>;
/**
 * Helper function for deleting pinecone indices.
 * @param params The params for deleting a Pinecone index.
 * @param params.clientParams The params to initialize Pinecone.
 * @param params.name The name of the Pinecone index to delete.
 * @returns a void Promise that is fulfilled when the index has been deleted.
 */
declare function deletePineconeIndex(params: {
    clientParams?: PineconeConfiguration;
    name: string;
}): Promise<void>;

export { configurePineconeIndexer, configurePineconeRetriever, createPineconeIndex, pinecone as default, deletePineconeIndex, describePineconeIndex, pinecone, pineconeIndexerRef, pineconeRetrieverRef };
