import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as IndexesAPI from 'cloudflare/resources/vectorize/indexes';
import { SinglePage } from 'cloudflare/pagination';
export declare class Indexes extends APIResource {
    /**
     * Creates and returns a new Vectorize Index.
     */
    create(accountIdentifier: string, body: IndexCreateParams, options?: Core.RequestOptions): Core.APIPromise<VectorizeCreateIndex | null>;
    /**
     * Updates and returns the specified Vectorize Index.
     */
    update(accountIdentifier: string, indexName: string, body: IndexUpdateParams, options?: Core.RequestOptions): Core.APIPromise<VectorizeCreateIndex | null>;
    /**
     * Returns a list of Vectorize Indexes
     */
    list(accountIdentifier: string, options?: Core.RequestOptions): Core.PagePromise<VectorizeCreateIndicesSinglePage, VectorizeCreateIndex>;
    /**
     * Deletes the specified Vectorize Index.
     */
    delete(accountIdentifier: string, indexName: string, options?: Core.RequestOptions): Core.APIPromise<IndexDeleteResponse | null>;
    /**
     * Delete a set of vectors from an index by their vector identifiers.
     */
    deleteByIds(accountIdentifier: string, indexName: string, body: IndexDeleteByIDsParams, options?: Core.RequestOptions): Core.APIPromise<VectorizeIndexDeleteVectorsByID | null>;
    /**
     * Returns the specified Vectorize Index.
     */
    get(accountIdentifier: string, indexName: string, options?: Core.RequestOptions): Core.APIPromise<VectorizeCreateIndex | null>;
    /**
     * Get a set of vectors from an index by their vector identifiers.
     */
    getByIds(accountIdentifier: string, indexName: string, body: IndexGetByIDsParams, options?: Core.RequestOptions): Core.APIPromise<IndexGetByIDsResponse | null>;
    /**
     * Inserts vectors into the specified index and returns the count of the vectors
     * successfully inserted.
     */
    insert(accountIdentifier: string, indexName: string, body: IndexInsertParams, options?: Core.RequestOptions): Core.APIPromise<VectorizeIndexInsert | null>;
    /**
     * Finds vectors closest to a given vector in an index.
     */
    query(accountIdentifier: string, indexName: string, body: IndexQueryParams, options?: Core.RequestOptions): Core.APIPromise<VectorizeIndexQuery | null>;
    /**
     * Upserts vectors into the specified index, creating them if they do not exist and
     * returns the count of values and ids successfully inserted.
     */
    upsert(accountIdentifier: string, indexName: string, body: IndexUpsertParams, options?: Core.RequestOptions): Core.APIPromise<VectorizeIndexUpsert | null>;
}
export declare class VectorizeCreateIndicesSinglePage extends SinglePage<VectorizeCreateIndex> {
}
export interface VectorizeCreateIndex {
    config?: VectorizeCreateIndex.Config;
    /**
     * Specifies the timestamp the resource was created as an ISO8601 string.
     */
    created_on?: string;
    /**
     * Specifies the description of the index.
     */
    description?: string;
    /**
     * Specifies the timestamp the resource was modified as an ISO8601 string.
     */
    modified_on?: string;
    name?: string;
}
export declare namespace VectorizeCreateIndex {
    interface Config {
        /**
         * Specifies the number of dimensions for the index
         */
        dimensions: number;
        /**
         * Specifies the type of metric to use calculating distance.
         */
        metric: 'cosine' | 'euclidean' | 'dot-product';
    }
}
export interface VectorizeIndexDeleteVectorsByID {
    /**
     * The count of the vectors successfully deleted.
     */
    count?: number;
    /**
     * Array of vector identifiers of the vectors that were successfully processed for
     * deletion.
     */
    ids?: Array<string>;
}
export interface VectorizeIndexInsert {
    /**
     * Specifies the count of the vectors successfully inserted.
     */
    count?: number;
    /**
     * Array of vector identifiers of the vectors successfully inserted.
     */
    ids?: Array<string>;
}
export interface VectorizeIndexQuery {
    /**
     * Specifies the count of vectors returned by the search
     */
    count?: number;
    /**
     * Array of vectors matched by the search
     */
    matches?: Array<VectorizeIndexQuery.Match>;
}
export declare namespace VectorizeIndexQuery {
    interface Match {
        /**
         * Identifier
         */
        id?: string;
        metadata?: unknown;
        /**
         * The score of the vector according to the index's distance metric
         */
        score?: number;
        values?: Array<number>;
    }
}
export interface VectorizeIndexUpsert {
    /**
     * Specifies the count of the vectors successfully inserted.
     */
    count?: number;
    /**
     * Array of vector identifiers of the vectors successfully inserted.
     */
    ids?: Array<string>;
}
export type IndexDeleteResponse = unknown | string;
/**
 * Array of vectors with matching ids.
 */
export type IndexGetByIDsResponse = unknown;
export interface IndexCreateParams {
    /**
     * Specifies the type of configuration to use for the index.
     */
    config: IndexCreateParams.VectorizeIndexPresetConfiguration | IndexCreateParams.VectorizeIndexDimensionConfiguration;
    name: string;
    /**
     * Specifies the description of the index.
     */
    description?: string;
}
export declare namespace IndexCreateParams {
    interface VectorizeIndexPresetConfiguration {
        /**
         * Specifies the preset to use for the index.
         */
        preset: '@cf/baai/bge-small-en-v1.5' | '@cf/baai/bge-base-en-v1.5' | '@cf/baai/bge-large-en-v1.5' | 'openai/text-embedding-ada-002' | 'cohere/embed-multilingual-v2.0';
    }
    interface VectorizeIndexDimensionConfiguration {
        /**
         * Specifies the number of dimensions for the index
         */
        dimensions: number;
        /**
         * Specifies the type of metric to use calculating distance.
         */
        metric: 'cosine' | 'euclidean' | 'dot-product';
    }
}
export interface IndexUpdateParams {
    /**
     * Specifies the description of the index.
     */
    description: string;
}
export interface IndexDeleteByIDsParams {
    /**
     * A list of vector identifiers to delete from the index indicated by the path.
     */
    ids?: Array<string>;
}
export interface IndexGetByIDsParams {
    /**
     * A list of vector identifiers to retrieve from the index indicated by the path.
     */
    ids?: Array<string>;
}
export interface IndexInsertParams {
}
export interface IndexQueryParams {
    /**
     * Whether to return the metadata associated with the closest vectors.
     */
    returnMetadata?: boolean;
    /**
     * Whether to return the values associated with the closest vectors.
     */
    returnValues?: boolean;
    /**
     * The number of nearest neighbors to find.
     */
    topK?: number;
    /**
     * The search vector that will be used to find the nearest neighbors.
     */
    vector?: Array<number>;
}
export interface IndexUpsertParams {
}
export declare namespace Indexes {
    export import VectorizeCreateIndex = IndexesAPI.VectorizeCreateIndex;
    export import VectorizeIndexDeleteVectorsByID = IndexesAPI.VectorizeIndexDeleteVectorsByID;
    export import VectorizeIndexInsert = IndexesAPI.VectorizeIndexInsert;
    export import VectorizeIndexQuery = IndexesAPI.VectorizeIndexQuery;
    export import VectorizeIndexUpsert = IndexesAPI.VectorizeIndexUpsert;
    export import IndexDeleteResponse = IndexesAPI.IndexDeleteResponse;
    export import IndexGetByIDsResponse = IndexesAPI.IndexGetByIDsResponse;
    export import VectorizeCreateIndicesSinglePage = IndexesAPI.VectorizeCreateIndicesSinglePage;
    export import IndexCreateParams = IndexesAPI.IndexCreateParams;
    export import IndexUpdateParams = IndexesAPI.IndexUpdateParams;
    export import IndexDeleteByIDsParams = IndexesAPI.IndexDeleteByIDsParams;
    export import IndexGetByIDsParams = IndexesAPI.IndexGetByIDsParams;
    export import IndexInsertParams = IndexesAPI.IndexInsertParams;
    export import IndexQueryParams = IndexesAPI.IndexQueryParams;
    export import IndexUpsertParams = IndexesAPI.IndexUpsertParams;
}
//# sourceMappingURL=indexes.d.ts.map