import { GenkitPlugin } from 'genkit/plugin';
import { P as PluginOptions } from '../types-DyPriOk2.js';
export { D as DocumentIndexer, a as DocumentRetriever, N as Neighbor, V as VectorSearchOptions } from '../types-DyPriOk2.js';
export { P as PluginOptions } from '../types-B3i-Lt7D.js';
export { getBigQueryDocumentIndexer, getBigQueryDocumentRetriever } from './vector_search/bigquery.js';
export { getFirestoreDocumentIndexer, getFirestoreDocumentRetriever } from './vector_search/firestore.js';
export { vertexAiIndexerRef, vertexAiIndexers } from './vector_search/indexers.js';
export { vertexAiRetrieverRef, vertexAiRetrievers } from './vector_search/retrievers.js';
import 'genkit';
import '@google-cloud/aiplatform';
import 'genkit/embedder';
import 'genkit/retriever';
import 'google-auth-library';
import '@google-cloud/vertexai';
import 'genkit/model';
import '@google-cloud/bigquery';
import 'firebase-admin/firestore';

/**
 * Copyright 2024 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * VertexAI vector search plugin
 *
 * ```ts
 * import { vertexAIVectorSearch } from '@genkit-ai/vertexai/vectorsearch';
 *
 * const ai = genkit({
 *   plugins: [
 *     vertexAI({ ... }),
 *     vertexAIVectorSearch({
        projectId: PROJECT_ID,
        location: LOCATION,
        vectorSearchOptions: [
          {
            publicDomainName: VECTOR_SEARCH_PUBLIC_DOMAIN_NAME,
            indexEndpointId: VECTOR_SEARCH_INDEX_ENDPOINT_ID,
            indexId: VECTOR_SEARCH_INDEX_ID,
            deployedIndexId: VECTOR_SEARCH_DEPLOYED_INDEX_ID,
            documentRetriever: VECTOR_SEARCH_DOCUMENT_RETRIEVER,
            documentIndexer: VECTOR_SEARCH_DOCUMENT_INDEXER,
            embedder: VECTOR_SEARCH_EMBEDDER,
          },
        ],
      }),
 *   ],
 * });
 *
 * const metadata1 = {
 *   restricts: [{
 *     namespace: "colour",
 *     allowList: ["green", "blue, "purple"],
 *     denyList:  ["red", "grey"],
 *   }],
 *   numericRestricts: [
 *   {
 *     namespace: "price",
 *     valueFloat: 4199.99,
 *   },
 *   {
 *     namespace: "weight",
 *     valueDouble: 987.6543,
 *   },
 *   {
 *     namespace: "ports",
 *     valueInt: 3,
 *   },
 * ],
 * }
 * const productDescription1 = "The 'Synapse Slate' seamlessly integrates neural pathways, allowing users to control applications with thought alone. Its holographic display adapts to any environment, projecting interactive interfaces onto any surface."
 * const doc1 = Document.fromText(productDescription1, metadata1);
 *
 * // Index the document along with its restricts and numericRestricts
 * const indexResponse = await ai.index({
 *   indexer: vertexAiIndexerRef({ ... }),
 *   [doc1],
 * });
 *
 *
 * // Later, construct a query using restricts and numeric restricts
 * const queryMetadata = {
 *   restricts: [{
 *     namespace: "colour",
 *     allowList: ["purple"],
 *     denyList: ["red"],
 *   }],
 *   numericRestricts: [{
 *     namespace: "price",
 *     valueFloat: 5000.00,
 *     op: LESS,
 *   }]
 * };
 * const query = "I'm looking for something with a projected display";
 * const queryDoc = new Document(query, queryMetadata);
 *
 * const response = await ai.retrieve({
 *   retriever: vertexAIRetrieverRef({ ... }),
 *   query: queryDocument,
 *   options: { k },
 * });
 *
 * console.log(`response: ${response}`);
 * ```
 */
declare function vertexAIVectorSearch(options?: PluginOptions): GenkitPlugin;

export { vertexAIVectorSearch };
