//! SQL non-function lifecycle registry entries.

use super::{SqlContractObject, SqlLifecycle, SqlObjectKind};

pub(super) const CATALOG_SQL_CONTRACT_OBJECTS_LEN: usize = 143;

#[rustfmt::skip]
pub(super) const CATALOG_SQL_CONTRACT_OBJECTS: &[SqlContractObject; CATALOG_SQL_CONTRACT_OBJECTS_LEN] = &[
    SqlContractObject::object(
        SqlObjectKind::Schema,
        Some("pgcontext"),
        "pgcontext",
        SqlLifecycle::Stable,
    ),
    SqlContractObject::object(SqlObjectKind::Type, None, "vector", SqlLifecycle::Stable),
    SqlContractObject::object(SqlObjectKind::Type, None, "bitvec", SqlLifecycle::Experimental),
    SqlContractObject::object(
        SqlObjectKind::Type,
        None,
        "halfvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Type,
        None,
        "sparsevec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::stable_pgcontext_type("embeddingmigrationstatus"),
    SqlContractObject::stable_pgcontext_type("indexadvisorrecommendation"),
    SqlContractObject::stable_pgcontext_type("indexdiagnosticstatus"),
    SqlContractObject::stable_pgcontext_type("indexlifecyclestatus"),
    SqlContractObject::stable_pgcontext_type("indexmemoryestimatestatus"),
    SqlContractObject::stable_pgcontext_type("optimizationstatus"),
    SqlContractObject::stable_pgcontext_type("querycohortstatus"),
    SqlContractObject::stable_pgcontext_type("queryexplainstatus"),
    SqlContractObject::stable_pgcontext_type("querylatencybucket"),
    SqlContractObject::stable_pgcontext_type("querylifecyclestate"),
    SqlContractObject::stable_pgcontext_type("recallcheckstatus"),
    SqlContractObject::stable_pgcontext_type("telemetrystatus"),
    SqlContractObject::stable_pgcontext_type("vacuumadvicestatus"),
    SqlContractObject::object(
        SqlObjectKind::Type,
        Some("pgcontext"),
        "buildjobstatus",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(SqlObjectKind::AccessMethod, None, "pgcontext_hnsw", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("vector_ops", "btree, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("halfvec_ops", "btree, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("sparsevec_ops", "btree, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("bitvec_ops", "btree, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("vector_hnsw_ops", "pgcontext_hnsw, vector", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("vector_hnsw_ip_ops", "pgcontext_hnsw, vector", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("vector_hnsw_cosine_ops", "pgcontext_hnsw, vector", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("vector_hnsw_l1_ops", "pgcontext_hnsw, vector", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator_class("halfvec_hnsw_ops", "pgcontext_hnsw, halfvec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("halfvec_hnsw_ip_ops", "pgcontext_hnsw, halfvec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("halfvec_hnsw_cosine_ops", "pgcontext_hnsw, halfvec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("halfvec_hnsw_l1_ops", "pgcontext_hnsw, halfvec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("sparsevec_hnsw_ops", "pgcontext_hnsw, sparsevec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("sparsevec_hnsw_ip_ops", "pgcontext_hnsw, sparsevec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("sparsevec_hnsw_cosine_ops", "pgcontext_hnsw, sparsevec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("sparsevec_hnsw_l1_ops", "pgcontext_hnsw, sparsevec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("bitvec_hnsw_hamming_ops", "pgcontext_hnsw, bitvec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator_class("bitvec_hnsw_jaccard_ops", "pgcontext_hnsw, bitvec", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<->", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<#>", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<=>", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<+>", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<=", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("=", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<>", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator(">=", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator(">", "vector, vector", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_operator("<->", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<#>", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<=>", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<+>", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<=", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("=", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<>", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator(">=", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator(">", "halfvec, halfvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<->", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<#>", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<=>", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<+>", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<=", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("=", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<>", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator(">=", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator(">", "sparsevec, sparsevec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<=", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("=", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<>", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator(">=", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator(">", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<~>", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<%>", "bitvec, bitvec", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<~>", "bit, bit", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<%>", "bit, bit", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<~>", "bit varying, bit varying", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_operator("<%>", "bit varying, bit varying", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_aggregate("sum(vector)", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_aggregate("avg(vector)", SqlLifecycle::Stable),
    SqlContractObject::pgcontext_aggregate("sum(halfvec)", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_aggregate("avg(halfvec)", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_aggregate("sum(sparsevec)", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_aggregate("avg(sparsevec)", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_aggregate("bit_or(bitvec)", SqlLifecycle::Experimental),
    SqlContractObject::pgcontext_aggregate("bit_and(bitvec)", SqlLifecycle::Experimental),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "real[] AS vector",
        SqlLifecycle::Stable,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "integer[] AS vector",
        SqlLifecycle::Stable,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "double precision[] AS vector",
        SqlLifecycle::Stable,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "vector AS real[]",
        SqlLifecycle::Stable,
    ),
    SqlContractObject::object(SqlObjectKind::Cast, None, "vector AS vector", SqlLifecycle::Internal),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "real[] AS halfvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "integer[] AS halfvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "double precision[] AS halfvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "halfvec AS real[]",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "halfvec AS vector",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(SqlObjectKind::Cast, None, "halfvec AS halfvec", SqlLifecycle::Internal),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "bit AS bitvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "bit varying AS bitvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "bitvec AS bit",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "bitvec AS bit varying",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "boolean[] AS bitvec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "bitvec AS boolean[]",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(SqlObjectKind::Cast, None, "bitvec AS bitvec", SqlLifecycle::Internal),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "real[] AS sparsevec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "sparsevec AS real[]",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "vector AS sparsevec",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(
        SqlObjectKind::Cast,
        None,
        "sparsevec AS vector",
        SqlLifecycle::Experimental,
    ),
    SqlContractObject::object(SqlObjectKind::Cast, None, "sparsevec AS sparsevec", SqlLifecycle::Internal),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_artifact_reader_pins",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_build_deltas",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collections",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_vectors",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_sparse_vectors",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_points",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_late_interaction",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_late_interaction_tokens",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_aliases",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_collection_payload_columns",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_query_stats",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_model_versions",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_embedding_migrations",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_pgvector_ownership_conversions",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Table,
        Some("pgcontext"),
        "_build_jobs",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Trigger,
        Some("pgcontext"),
        "_collection_points.pgcontext_capture_build_point_delta",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Trigger,
        Some("pgcontext"),
        "_collections.pgcontext_cleanup_late_interaction_registration",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Trigger,
        Some("pgcontext"),
        "_build_jobs.pgcontext_build_jobs_no_progress_regression",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::Trigger,
        Some("pgcontext"),
        "_build_jobs.pgcontext_build_jobs_terminal_state",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(SqlObjectKind::Table, Some("pgcontext"), "_artifact_segments", SqlLifecycle::Internal),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_collection_acl",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_collection_vectors",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_collection_sparse_vectors",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_collection_points",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_query_stats",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_collection_late_interaction",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_collection_payload_columns",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_build_jobs",
        SqlLifecycle::Internal,
    ),
    SqlContractObject::object(SqlObjectKind::View, Some("pgcontext"), "_visible_artifact_segments", SqlLifecycle::Internal),
    SqlContractObject::object(SqlObjectKind::View, Some("pgcontext"), "_visible_collection_limits", SqlLifecycle::Internal),
    SqlContractObject::object(SqlObjectKind::View, Some("pgcontext"), "_visible_collections", SqlLifecycle::Internal),
    SqlContractObject::object(
        SqlObjectKind::View,
        Some("pgcontext"),
        "_visible_pgvector_ownership_conversions",
        SqlLifecycle::Internal,
    ),
];
