import { Semaphore } from "@chriscdn/promise-semaphore"; import { TypedEmitter } from "tiny-typed-emitter"; import { Constellation, Signature } from "./client.js"; import { ComposanteClientDic } from "./composanteClient.js"; import type { Pushable } from "it-pushable"; import type { ÉpingleFavorisAvecId } from "./favoris.js"; import type { élémentBdListeDonnées, élémentDonnées } from "./tableaux.js"; import type { infoAuteur, infoRésultat, résultatObjectifRecherche, résultatRecherche, schémaFonctionOublier, schémaFonctionSuivi, schémaFonctionSuivreConfianceRecherche, schémaFonctionSuivreObjectifRecherche, schémaFonctionSuivreQualitéRecherche, schémaRetourFonctionRechercheParN, schémaRetourFonctionRechercheParProfondeur } from "./types.js"; import type { erreurValidation } from "./valid.js"; type clefObjet = "bds" | "variables" | "motsClefs" | "projets" | "nuées"; export type infoDispositif = { idLibp2p: string; idDispositif: string; idCompte: string; clefPublique: string; signatures: { id: string; publicKey: string; }; nChangementsCompte: number; }; export type statutDispositif = { infoDispositif: infoDispositif; vuÀ?: number; }; export type élémentBdMembres = { idCompte: string; dispositifs: string[]; }; export type itemRechercheProfondeur = { profondeur: number; } & { [key: string]: unknown; }; export type infoMembreRéseau = { idCompte: string; profondeur: number; confiance: number; }; export type infoRelation = { de: string; pour: string; confiance: number; profondeur: number; }; export interface infoConfiance { idCompte: string; confiance: number; } export interface infoBloqué { idCompte: string; privé: boolean; } export interface infoMembre { idCompte: string; protocoles: string[]; dispositifs: infoDispositif[]; } export interface statutMembre { infoMembre: infoMembre; vuÀ?: number; } export interface infoRéplications { membres: statutMembre[]; dispositifs: { épingle: ÉpingleFavorisAvecId; dispositif: { idDispositif: string; vuÀ?: number; }; }[]; } export interface résultatRechercheSansScore { id: string; objectif: résultatObjectifRecherche; confiance: number; qualité: number; } export type élémentDeMembre = { idCompte: string; élément: élémentDonnées; }; export type élémentDeMembreAvecValid = élémentDeMembre & { valid: erreurValidation[]; }; export type bdDeMembre = { idCompte: string; bd: string; }; export type MessageDirecte = MessageDirecteRequêteRejoindreCompte | MessageDirecteSalut | MessageDirecteTexte; export type ContenuMessageSalut = { contenu: { idLibp2p: string; idDispositif: string; idCompte: string; clefPublique: string; signatures: { id: string; publicKey: string; }; nChangementsCompte: number; }; signature: Signature; }; export type MessageDirecteRequêteRejoindreCompte = { type: "Je veux rejoindre ce compte"; contenu: ContenuMessageRejoindreCompte; }; export type MessageDirecteSalut = { type: "Salut !"; contenu: ContenuMessageSalut; }; export type ContenuMessageRejoindreCompte = { idDispositif: string; empreinteVérification: string; }; export type MessageDirecteTexte = { type: "texte"; contenu: { message: string; }; }; export type statutConfianceMembre = "FIABLE" | "BLOQUÉ" | "NEUTRE"; type structureBdPrincipaleRéseau = { [idCompte: string]: statutConfianceMembre; }; type ÉvénementsRéseau = { changementConnexions: () => void; messageDirecte: (args: { de: string; message: MessageDirecte; }) => void; changementMembresBloqués: () => void; membreVu: () => void; }; export declare class Réseau extends ComposanteClientDic { client: Constellation; bloquésPrivés: Set; verrouFlux: Semaphore; dispositifsEnLigne: { [key: string]: statutDispositif; }; connexionsDirectes: { [key: string]: Pushable; }; fsOublier: schémaFonctionOublier[]; événements: TypedEmitter<ÉvénementsRéseau>; constructor({ client }: { client: Constellation; }); initialiser(): Promise; obtFluxDispositif({ idDispositif, signal, }: { idDispositif: string; signal?: AbortSignal; }): Promise>; obtFluxPair({ idPair, signal, }: { idPair: string; signal?: AbortSignal; }): Promise>; envoyerMessageGossipsub({ message, sujet, }: { message: unknown; sujet?: string; }): Promise; suivreMessagesGossipsub({ sujet, f, }: { sujet: string; f: schémaFonctionSuivi; }): Promise; suivreMesAdresses({ f, }: { f: schémaFonctionSuivi; }): Promise; connecterÀAdresse({ adresse }: { adresse: string; }): Promise; envoyerMessageAuDispositif({ msg, idDispositif, signal, }: { msg: MessageDirecte; idDispositif: string; signal?: AbortSignal; }): Promise; envoyerMessageAuPair({ msg, idPair, signal, }: { msg: MessageDirecte; idPair: string; signal?: AbortSignal; }): Promise; envoyerMessageAuMembre({ msg, idCompte, }: { msg: MessageDirecte; idCompte: string; }): Promise; suivreMessagesDirectes({ f, type, de, }: { f: schémaFonctionSuivi; type?: MessageDirecte["type"] | MessageDirecte["type"][]; de?: string; }): Promise; direSalut({ idPair }: { idPair: string; }): Promise; envoyerDemandeRejoindreCompte({ codeSecret, }: { codeSecret: string; }): Promise; recevoirSalut({ message, }: { message: ContenuMessageSalut; }): Promise; _nettoyerDispositifsEnLigne(): void; _sauvegarderDispositifsEnLigne(): Promise; _validerInfoMembre({ info, }: { info: infoDispositif; }): Promise; faireConfianceAuMembre({ idCompte, }: { idCompte: string; }): Promise; nePlusFaireConfianceAuMembre({ idCompte, }: { idCompte: string; }): Promise; suivreFiables({ f, idCompte, }: { f: schémaFonctionSuivi; idCompte?: string; }): Promise; _initaliserBloquésPrivés(): Promise; _sauvegarderBloquésPrivés(): Promise; bloquerMembre({ idCompte, privé, }: { idCompte: string; privé?: boolean; }): Promise; débloquerMembre({ idCompte }: { idCompte: string; }): Promise; suivreBloquésPubliques({ f, idCompte, }: { f: schémaFonctionSuivi; idCompte?: string; }): Promise; suivreBloqués({ f, idCompte, }: { f: schémaFonctionSuivi; idCompte?: string; }): Promise; suivreRelationsImmédiates({ f, idCompte, }: { f: schémaFonctionSuivi; idCompte?: string; }): Promise; suivreRelationsConfiance({ f, profondeur, idCompteDébut, }: { f: schémaFonctionSuivi; profondeur?: number; idCompteDébut?: string; }): Promise; suivreComptesRéseau({ f, profondeur, idCompteDébut, }: { f: schémaFonctionSuivi; profondeur?: number; idCompteDébut?: string; }): Promise; suivreComptesRéseauEtEnLigne({ f, profondeur, idCompteDébut, }: { f: schémaFonctionSuivi; profondeur?: number; idCompteDébut?: string; }): Promise; suivreConfianceMonRéseauPourMembre({ idCompte, f, profondeur, idCompteRéférence, }: { idCompte: string; f: schémaFonctionSuivi; profondeur: number; idCompteRéférence?: string; }): Promise; suivreConnexionsPostesSFIP({ f, }: { f: schémaFonctionSuivi<{ pair: string; adresses: string[]; }[]>; }): Promise; suivreConnexionsDispositifs({ f, }: { f: schémaFonctionSuivi; }): Promise; suivreConnexionsMembres({ f, }: { f: schémaFonctionSuivi; }): Promise; suivreProtocolesMembre({ f, idCompte, }: { f: schémaFonctionSuivi<{ [key: string]: string[]; }>; idCompte?: string; }): Promise; suivreProtocolesDispositif({ idDispositif, f, }: { idDispositif?: string; f: schémaFonctionSuivi; }): Promise; rechercher({ f, nRésultatsDésirés, fRecherche, fConfiance, fQualité, fObjectif, fScore, }: { f: schémaFonctionSuivi[]>; fRecherche: (args: { idCompte: string; fSuivi: (x: string[] | undefined) => Promise; }) => Promise; fConfiance: schémaFonctionSuivreConfianceRecherche; nRésultatsDésirés?: number; fQualité: schémaFonctionSuivreQualitéRecherche; fObjectif?: schémaFonctionSuivreObjectifRecherche; fScore?: (r: résultatRechercheSansScore) => number; }): Promise; rechercherMembres({ f, nRésultatsDésirés, fObjectif, }: { f: schémaFonctionSuivi[]>; nRésultatsDésirés?: number; fObjectif?: schémaFonctionSuivreObjectifRecherche; }): Promise; suivreConfianceAuteurs({ idItem, clef, f, }: { idItem: string; clef: clefObjet; f: schémaFonctionSuivi; }): Promise; rechercherObjets({ f, clef, nRésultatsDésirés, fRecherche, fRechercheLesMiens, fQualité, fObjectif, toutLeRéseau, }: { f: schémaFonctionSuivi[]>; clef: clefObjet; nRésultatsDésirés?: number; fRecherche: (args: { idCompte: string; f: (objets: string[] | undefined) => void; }) => Promise; fRechercheLesMiens: (fSuivreRacine: (objets: string[]) => Promise) => Promise; fQualité: schémaFonctionSuivreQualitéRecherche; fObjectif?: schémaFonctionSuivreObjectifRecherche; toutLeRéseau?: boolean; }): Promise; rechercherNuées({ f, nRésultatsDésirés, fObjectif, toutLeRéseau, }: { f: schémaFonctionSuivi[]>; nRésultatsDésirés?: number; fObjectif?: schémaFonctionSuivreObjectifRecherche; toutLeRéseau?: boolean; }): Promise; rechercherBds({ f, nRésultatsDésirés, fObjectif, toutLeRéseau, }: { f: schémaFonctionSuivi[]>; nRésultatsDésirés?: number; fObjectif?: schémaFonctionSuivreObjectifRecherche; toutLeRéseau?: boolean; }): Promise; rechercherVariables({ f, nRésultatsDésirés, fObjectif, toutLeRéseau, }: { f: schémaFonctionSuivi[]>; nRésultatsDésirés?: number; fObjectif?: schémaFonctionSuivreObjectifRecherche; toutLeRéseau?: boolean; }): Promise; rechercherMotsClefs({ f, nRésultatsDésirés, fObjectif, toutLeRéseau, }: { f: schémaFonctionSuivi[]>; nRésultatsDésirés?: number; fObjectif?: schémaFonctionSuivreObjectifRecherche; toutLeRéseau?: boolean; }): Promise; rechercherProjets({ f, nRésultatsDésirés, fObjectif, toutLeRéseau, }: { f: schémaFonctionSuivi[]>; nRésultatsDésirés?: number; fObjectif?: schémaFonctionSuivreObjectifRecherche; toutLeRéseau?: boolean; }): Promise; suivreAuteursObjet({ idObjet, clef, f, }: { idObjet: string; clef: clefObjet; f: schémaFonctionSuivi; }): Promise; suivreAuteursMotClef({ idMotClef, f, }: { idMotClef: string; f: schémaFonctionSuivi; }): Promise; suivreAuteursVariable({ idVariable, f, }: { idVariable: string; f: schémaFonctionSuivi; }): Promise; suivreAuteursBd({ idBd, f, }: { idBd: string; f: schémaFonctionSuivi; }): Promise; suivreAuteursProjet({ idProjet, f, }: { idProjet: string; f: schémaFonctionSuivi; }): Promise; suivreAuteursNuée({ idNuée, f, }: { idNuée: string; f: schémaFonctionSuivi; }): Promise; suivreObjetsMembre({ idCompte, fListeObjets, fSuivi, }: { idCompte: string; fListeObjets: (args: { fSuivreRacine: (ids: string[]) => Promise; }) => Promise; fSuivi: schémaFonctionSuivi; }): Promise; suivreBdsMembre({ idCompte, f, }: { idCompte: string; f: schémaFonctionSuivi; }): Promise; suivreProjetsMembre({ idCompte, f, }: { idCompte: string; f: schémaFonctionSuivi; }): Promise; suivreFavorisMembre({ idCompte, f, }: { idCompte: string; f: schémaFonctionSuivi<ÉpingleFavorisAvecId[]>; }): Promise; suivreVariablesMembre({ idCompte, f, }: { idCompte: string; f: schémaFonctionSuivi; }): Promise; suivreMotsClefsMembre({ idCompte, f, }: { idCompte: string; f: schémaFonctionSuivi; }): Promise; suivreNuéesMembre({ idCompte, f, }: { idCompte: string; f: schémaFonctionSuivi; }): Promise; suivreFavorisObjet({ idObjet, f, profondeur, }: { idObjet: string; f: schémaFonctionSuivi<{ épingle: ÉpingleFavorisAvecId; idCompte: string; }[]>; profondeur: number; }): Promise; suivreRéplications({ idObjet, f, profondeur, }: { idObjet: string; f: schémaFonctionSuivi; profondeur: number; }): Promise; suivreBdsDeNuée({ idNuée, f, nRésultatsDésirés, }: { idNuée: string; f: schémaFonctionSuivi; nRésultatsDésirés?: number; }): Promise; suivreÉlémentsDeTableauxUniques({ idNuéeUnique, clef, f, nBds, }: { idNuéeUnique: string; clef: string; f: schémaFonctionSuivi<élémentDeMembre[]>; nBds?: number; }): Promise; fermer(): Promise; } export {};