import { HiResTime } from './binding';
import { Meter } from './metrics';
import { RequestTracer } from './tracing';
/**
 * Represents the possible types of values that can be used as span attributes.
 *
 * Supports primitive types (string, number, boolean) and arrays of these types (allowing null/undefined elements).
 */
export type AttributeValue = string | number | boolean | Array<null | undefined | string> | Array<null | undefined | number> | Array<null | undefined | boolean>;
/**
 * Represents the possible input types for timestamps in the observability system.
 *
 * - `HiResTime`: High-resolution time.
 * - `number`: Unix timestamp in milliseconds.
 * - `Date`: JavaScript Date object.
 */
export type TimeInput = HiResTime | number | Date;
/**
 * @internal
 */
export type OpType = KeyValueOp | DatastructureOp | StreamingOp | AnalyticsMgmtOp | BucketMgmtOp | CollectionMgmtOp | EventingFunctionMgmtOp | QueryIndexMgmtOp | SearchIndexMgmtOp | UserMgmtOp | ViewIndexMgmtOp;
/**
 * @internal
 */
export type HttpOpType = StreamingOp | AnalyticsMgmtOp | BucketMgmtOp | CollectionMgmtOp | EventingFunctionMgmtOp | QueryIndexMgmtOp | SearchIndexMgmtOp | UserMgmtOp | ViewIndexMgmtOp;
/**
 * @internal
 */
export declare enum KeyValueOp {
    Append = "append",
    Decrement = "decrement",
    Exists = "exists",
    Get = "get",
    GetAllReplicas = "get_all_replicas",
    GetAndLock = "get_and_lock",
    GetAndTouch = "get_and_touch",
    GetAnyReplica = "get_any_replica",
    GetReplica = "get_replica",// this is only for the C++ core replica ops
    Increment = "increment",
    Insert = "insert",
    LookupIn = "lookup_in",
    LookupInAllReplicas = "lookup_in_all_replicas",
    LookupInAnyReplica = "lookup_in_any_replica",
    LookupInReplica = "lookup_in_replica",// this is only for the C++ core replica ops
    MutateIn = "mutate_in",
    Prepend = "prepend",
    RangeScanCancel = "range_scan_cancel",
    RangeScanContinue = "range_scan_continue",
    RangeScanCreate = "range_scan_create",
    Remove = "remove",
    Replace = "replace",
    Touch = "touch",
    Unlock = "unlock",
    Upsert = "upsert"
}
/**
 * @internal
 */
export declare enum DatastructureOp {
    ListGetAll = "list_get_all",
    ListGetAt = "list_get_at",
    ListIndexOf = "list_index_of",
    ListPush = "list_push",
    ListRemoveAt = "list_remove_at",
    ListSize = "list_size",
    ListUnshift = "list_unshift",
    MapExists = "map_exists",
    MapGet = "map_get",
    MapGetAll = "map_get_all",
    MapKeys = "map_keys",
    MapRemove = "map_remove",
    MapSet = "map_set",
    MapSize = "map_size",
    MapValues = "map_values",
    QueuePop = "queue_pop",
    QueuePush = "queue_push",
    QueueSize = "queue_size",
    SetAdd = "set_add",
    SetContains = "set_contains",
    SetRemove = "set_remove",
    SetSize = "set_size",
    SetValues = "set_values"
}
/**
 * @internal
 */
export declare enum StreamingOp {
    Analytics = "analytics_query",
    Query = "query",
    Search = "search_query",
    View = "view_query"
}
/**
 * @internal
 */
export declare enum AnalyticsMgmtOp {
    AnalyticsDatasetCreate = "manager_analytics_create_dataset",
    AnalyticsDatasetDrop = "manager_analytics_drop_dataset",
    AnalyticsDatasetGetAll = "manager_analytics_get_all_datasets",
    AnalyticsDataverseCreate = "manager_analytics_create_dataverse",
    AnalyticsDataverseDrop = "manager_analytics_drop_dataverse",
    AnalyticsGetPendingMutations = "manager_analytics_get_pending_mutations",
    AnalyticsIndexCreate = "manager_analytics_create_index",
    AnalyticsIndexDrop = "manager_analytics_drop_index",
    AnalyticsIndexGetAll = "manager_analytics_get_all_indexes",
    AnalyticsLinkConnect = "manager_analytics_connectlink",
    AnalyticsLinkCreate = "manager_analytics_create_link",
    AnalyticsLinkDisconnect = "manager_analytics_disconnect_link",
    AnalyticsLinkDrop = "manager_analytics_drop_link",
    AnalyticsLinkGetAll = "manager_analytics_get_all_links",
    AnalyticsLinkReplace = "manager_analytics_replace_link"
}
/**
 * @internal
 */
export declare enum BucketMgmtOp {
    BucketCreate = "manager_buckets_create_bucket",
    BucketDescribe = "manager_buckets_describe_bucket",
    BucketDrop = "manager_buckets_drop_bucket",
    BucketFlush = "manager_buckets_flush_bucket",
    BucketGet = "manager_buckets_get_bucket",
    BucketGetAll = "manager_buckets_get_all_buckets",
    BucketUpdate = "manager_buckets_update_bucket"
}
/**
 * @internal
 */
export declare enum CollectionMgmtOp {
    CollectionCreate = "manager_collections_create_collection",
    CollectionsManifestGet = "manager_collections_get_collections_manifest",
    CollectionDrop = "manager_collections_drop_collection",
    CollectionUpdate = "manager_collections_update_collection",
    ScopeCreate = "manager_collections_create_scope",
    ScopeDrop = "manager_collections_drop_scope",
    ScopeGetAll = "manager_collections_get_all_scopes"
}
/**
 * @internal
 */
export declare enum EventingFunctionMgmtOp {
    EventingDeployFunction = "manager_eventing_deploy_function",
    EventingDropFunction = "manager_eventing_drop_function",
    EventingGetAllFunctions = "manager_eventing_get_all_functions",
    EventingGetFunction = "manager_eventing_get_function",
    EventingGetStatus = "manager_eventing_functions_status",
    EventingPauseFunction = "manager_eventing_pause_function",
    EventingResumeFunction = "manager_eventing_resume_function",
    EventingUndeployFunction = "manager_eventing_undeploy_function",
    EventingUpsertFunction = "manager_eventing_upsert_function"
}
/**
 * @internal
 */
export declare enum QueryIndexMgmtOp {
    QueryIndexBuild = "manager_query_build_indexes",
    QueryIndexBuildDeferred = "manager_query_build_deferred_indexes",
    QueryIndexCreate = "manager_query_create_index",
    QueryIndexDrop = "manager_query_drop_index",
    QueryIndexGetAll = "manager_query_get_all_indexes",
    QueryIndexGetAllDeferred = "manager_query_get_all_deferred_indexes",
    QueryIndexWatchIndexes = "manager_query_watch_indexes"
}
/**
 * @internal
 */
export declare enum SearchIndexMgmtOp {
    SearchGetStats = "manager_search_get_stats",
    SearchIndexAllowQuerying = "manager_search_allow_querying",
    SearchIndexAnalyzeDocument = "manager_search_analyze_document",
    SearchIndexDisallowQuerying = "manager_search_disallow_querying",
    SearchIndexDrop = "manager_search_drop_index",
    SearchIndexFreezePlan = "manager_search_freeze_plan",
    SearchIndexGet = "manager_search_get_index",
    SearchIndexGetAll = "manager_search_get_all_indexes",
    SearchIndexGetDocumentsCount = "manager_search_get_indexed_documents_count",
    SearchIndexGetStats = "manager_search_get_index_stats",
    SearchIndexPauseIngest = "manager_search_pause_ingest",
    SearchIndexResumeIngest = "manager_search_resume_ingest",
    SearchIndexUnfreezePlan = "manager_search_unfreeze_plan",
    SearchIndexUpsert = "manager_search_upsert_index"
}
/**
 * @internal
 */
export declare enum UserMgmtOp {
    ChangePassword = "manager_users_change_password",
    GroupDrop = "manager_users_drop_group",
    GroupGet = "manager_users_get_group",
    GroupGetAll = "manager_users_get_all_groups",
    GroupUpsert = "manager_users_upsert_group",
    RoleGetAll = "manager_users_get_all_roles",
    UserDrop = "manager_users_drop_user",
    UserGet = "manager_users_get_user",
    UserGetAll = "manager_users_get_all_users",
    UserUpsert = "manager_users_upsert_user"
}
/**
 * @internal
 */
export declare enum ViewIndexMgmtOp {
    ViewIndexDrop = "manager_views_drop_design_document",
    ViewIndexGet = "manager_views_get_design_document",
    ViewIndexGetAll = "manager_views_get_all_design_documents",
    ViewIndexPublish = "manager_views_publish_design_document",
    ViewIndexUpsert = "manager_views_upsert_design_document"
}
/**
 * @internal
 */
export declare enum CppOpAttributeName {
    ClusterName = "cluster_name",
    ClusterUUID = "cluster_uuid",
    RetryCount = "retries"
}
/**
 * @internal
 */
export declare enum OpAttributeName {
    BucketName = "db.namespace",
    ClusterName = "couchbase.cluster.name",
    ClusterUUID = "couchbase.cluster.uuid",
    CollectionName = "couchbase.collection.name",
    DispatchSpanName = "dispatch_to_server",
    DurabilityLevel = "couchbase.durability",
    EncodingSpanName = "request_encoding",
    ErrorType = "error.type",
    MeterNameOpDuration = "db.client.operation.duration",
    OperationName = "db.operation.name",
    QueryStatement = "db.query.text",
    ReservedUnit = "__unit",
    ReservedUnitSeconds = "s",
    RetryCount = "couchbase.retries",
    ScopeName = "couchbase.scope.name",
    Service = "couchbase.service",
    SystemName = "db.system.name"
}
export declare const CppOpAttributeNameToOpAttributeNameMap: Record<CppOpAttributeName, OpAttributeName>;
export declare const isCppAttribute: (attr: any) => attr is CppOpAttributeName;
/**
 * @internal
 */
export declare enum DispatchAttributeName {
    LocalId = "couchbase.local_id",
    NetworkTransport = "network.transport",
    OperationId = "couchbase.operation_id",
    PeerAddress = "network.peer.address",
    PeerPort = "network.peer.port",
    ServerAddress = "server.address",
    ServerDuration = "couchbase.server_duration",
    ServerPort = "server.port"
}
/**
 * @internal
 */
export declare enum ServiceName {
    Analytics = "analytics",
    Eventing = "eventing",
    KeyValue = "kv",
    Management = "management",
    Query = "query",
    Search = "search",
    Transactions = "transactions",
    Views = "views"
}
/**
 * @internal
 */
export declare function serviceNameFromOpType(opType: OpType): ServiceName;
/**
 * Represents the status of a span in distributed tracing.
 */
export interface SpanStatus {
    /**
     * The status code indicating the outcome of the span.
     */
    code: SpanStatusCode;
    /**
     * An optional developer-facing error message providing additional context.
     */
    message?: string;
}
/**
 * An enumeration of status codes.
 */
export declare enum SpanStatusCode {
    /**
     * The default status.
     */
    UNSET = 0,
    /**
     * The operation has been validated by an Application developer or
     * Operator to have completed successfully.
     */
    OK = 1,
    /**
     * The operation contains an error.
     */
    ERROR = 2
}
/**
 * @internal
 */
export declare class ObservabilityInstruments {
    private readonly _tracer;
    private readonly _meter;
    private readonly _getClusterLabelsFn;
    constructor(tracer: RequestTracer, meter: any, getClusterLabelsFn?: () => Record<string, string | undefined>);
    /**
     * @internal
     */
    get tracer(): RequestTracer;
    /**
     * @internal
     */
    get meter(): Meter;
    /**
     * @internal
     */
    get clusterLabelsFn(): (() => Record<string, string | undefined>) | undefined;
}
