import { type OrbitDB, KeyValueDatabase, OpenDatabaseOptions } from "@orbitdb/core"; import { type FeedDatabaseType } from "@orbitdb/feed-db"; import { type OrderedKeyValueDatabaseType } from "@orbitdb/ordered-keyvalue-db"; import { type SetDatabaseType } from "@orbitdb/set-db"; import { TypedFeed, TypedKeyValue, TypedOrderedKeyValue, TypedSet } from "@constl/bohr-db"; import { type JSONSchemaType } from "ajv"; import { Semaphore } from "@chriscdn/promise-semaphore"; import { type ServiceMap } from "@libp2p/interface"; import type { schémaFonctionOublier, élémentsBd } from "./types.js"; import type { HeliaLibp2p } from "helia"; import type { Libp2p } from "libp2p"; import type { ServicesLibp2p } from "./sfip/index.js"; export declare const réessayer: ({ f, signal, }: { f: () => Promise; signal: AbortSignal; }) => Promise; export type Store = FeedDatabaseType | SetDatabaseType | KeyValueDatabase | OrderedKeyValueDatabaseType; type KeysMatching = { [K in keyof T]-?: T[K] extends V ? K : never; }[keyof T]; export declare const préparerOrbite: () => void; export declare function initOrbite({ sfip, dossierOrbite, }: { sfip: HeliaLibp2p>; dossierOrbite: string; }): Promise>; type bdOuverte = { bd: T; idsRequêtes: Set; }; export declare class GestionnaireOrbite { orbite: OrbitDB; _bdsOrbite: { [key: string]: bdOuverte; }; verrouOuvertureBd: Semaphore; _oublierNettoyageBdsOuvertes?: schémaFonctionOublier; signaleurArrêt: AbortController; constructor({ orbite, signaleurArrêt, }: { orbite: OrbitDB; signaleurArrêt?: AbortController; }); get identity(): OrbitDB["identity"]; ouvrirBd({ id, type, signal, options, }: { id: string; type: "keyvalue"; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBd({ id, type, signal, options, }: { id: string; type: "feed"; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBd({ id, type, signal, options, }: { id: string; type: "set"; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBd({ id, type, signal, options, }: { id: string; type: "ordered-keyvalue"; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBd({ id, signal, }: { id: string; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBd({ id, type, signal, options, }: { id: string; type?: "keyvalue" | "feed" | "set" | "ordered-keyvalue"; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBdTypée>({ id, type, schéma, signal, options, }: { id: string; type: "keyvalue"; schéma: JSONSchemaType; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBdTypée>({ id, type, schéma, signal, options, }: { id: string; type: "feed"; schéma: JSONSchemaType; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBdTypée>({ id, type, schéma, signal, options, }: { id: string; type: "set"; schéma: JSONSchemaType; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; ouvrirBdTypée>({ id, type, schéma, signal, options, }: { id: string; type: "ordered-keyvalue"; schéma: JSONSchemaType; signal?: AbortSignal; options?: Omit; }): Promise<{ bd: T; fOublier: schémaFonctionOublier; }>; créerBdIndépendante({ type, options, nom, }: { type: "set" | "ordered-keyvalue" | "keyvalue" | "feed"; options: Omit; nom?: string; }): Promise; effacerBd({ id }: { id: string; }): Promise; private lancerNettoyageBdsOuvertes; appliquerFonctionBdOrbite unknown>>({ idBd, fonction, args, }: { idBd: string; fonction: T; args: Parameters; }): Promise>; fermer({ arrêterOrbite }: { arrêterOrbite: boolean; }): Promise; } export declare class GestionnaireOrbiteGénéral { gestionnaires: { [idOrbite: string]: GestionnaireOrbite; }; constructor(); obtGestionnaireOrbite({ orbite, signaleurArrêt, }: { orbite: OrbitDB; signaleurArrêt?: AbortController; }): GestionnaireOrbite; fermer({ orbite, arrêterOrbite, signaleurArrêt, }: { orbite: OrbitDB; arrêterOrbite: boolean; signaleurArrêt: AbortController; }): Promise; } export declare const gestionnaireOrbiteGénéral: GestionnaireOrbiteGénéral; export {};