import type { Client } from "@libsql/client"; import { type ForeignVaultSource } from "../registry/repo.js"; export type SubscribeCloneOutcome = "cloned" | "already-present"; export type RepoVisibilityProbe = (owner: string, repoName: string) => Promise<"public" | "private" | "unknown">; export interface SubscribeRemoteRepo { owner: string; repoName: string; cloneUrl: string; visibility?: "public" | "private" | "unknown" | undefined; } export type RepoCoordinateProbe = (repoName: string, vaultName: string) => Promise; export declare function foreignSourceForVisibility(visibility: "public" | "private" | "unknown"): ForeignVaultSource; export interface SubscribeCloneArgs { vaultName: string; homeMeshName: string; targetSubdir?: string | undefined; foreignSource: ForeignVaultSource; cloneUrl: string; registryDb: Client; } export interface SubscribeCloneResult { vaultRid: Uint8Array; vaultRidHex: string; homeMeshRid: Uint8Array; } export type SubscribeCloneFn = (args: SubscribeCloneArgs) => Promise; export type SubscribeResultStatus = "subscription-written" | "subscription-already-present"; export interface SubscribeArgs { subscribedVaultName: string; fromMeshName: string; registryDb?: Client | undefined; cloneFn?: SubscribeCloneFn | undefined; visibilityProbe?: RepoVisibilityProbe | undefined; remoteRepo?: SubscribeRemoteRepo | undefined; coordinateProbe?: RepoCoordinateProbe | undefined; } export interface SubscribeResult { status: SubscribeResultStatus; subscribingMesh: { ridHex: string; name: string; mainVaultPath: string; }; subscribedVault: { ridHex: string; name: string; homeMeshRidHex: string; homeMeshName: string; }; meshYonPath: string; cloneAction: SubscribeCloneOutcome; indexBuilt: { lanesRan: boolean; arcsRan: boolean; ftsRan: boolean; }; durationMs: number; } export declare class SubscribeMainVaultMissingError extends Error { readonly errorCode = "main-vault-missing"; readonly meshName: string; constructor(meshName: string); } export declare class SubscribeVaultNotFoundError extends Error { readonly errorCode = "vault-not-found"; readonly vaultName: string; constructor(vaultName: string, reason: string); } export declare class SubscribeNoCoordinateError extends Error { readonly errorCode = "no-coordinate"; readonly vaultName: string; constructor(vaultName: string); } export declare function defaultGhUrlForVaultName(vaultName: string): string; export declare function subscribeFlow(args: SubscribeArgs): Promise; //# sourceMappingURL=subscribe.d.ts.map