import { type ConversationApprovalDecision, type ConversationGrant, type ConversationSelection, type SignedInSpace } from "@cotal-ai/core"; import { type MeshTarget, type UserBundle } from "@cotal-ai/workspace"; export interface ConversationAuthority { url: string; bundle: UserBundle; /** The authority advertises selection v1, so a request may carry a {@link ConversationSelection}. */ selection: boolean; /** The authority advertises connection approval v1: a person decides every new request. */ approval: boolean; } /** Discover without human proof, then bind every returned trust pin to the selected registration. */ export declare function discoverConversationAuthority(target: MeshTarget): Promise; /** A signed-in space with the hosted connector its discovery document advertises, read the way * `meshes add --from` reads that document. Only version 1 with an HTTPS URL is a hosted connector. */ export declare function signedInSpace(target: Pick): Promise; export interface ConversationMaterial { v: 1; requestId: string; space: string; owner: string; actor: string; lifecycleUid: string; grant: ConversationGrant; policy?: { events: "required"; }; sentinelCreds: string; exchangeUrl: string; retire: { url: string; }; /** The person's recorded decision. `null` or absent only for an identity issued before approval. */ approval?: ConversationApprovalDecision | null; } /** A successful HTTP status is not authority: require the exact pins and exactly the grant the * person approved. When `approval` is not required, for an identity requested before approval, an * answer may carry no decision; its grant is then the one the request implies: the selection's, or * the own-event-only grant without one. `approval.id` binds a decision to the pending approval the * client saw. */ export declare function checkConversationMaterial(value: unknown, authority: ConversationAuthority, requestId: string, selection?: ConversationSelection, approval?: { required: true; id?: string; }): ConversationMaterial; /** The items a 409 says exceed the caller's own access, as one bounded line, or undefined when the * answer is not that refusal. The authority wrote nothing for such a request. */ export declare function selectionRefusal(status: number, value: unknown): string | undefined; /** The phase a retirement reached, `terminal` once it is complete. Pending, malformed and unconfirmed * retirement all keep the saved identity for an exact retry. */ export declare function conversationRetirementPhase(status: number, value: unknown, material: ConversationMaterial): string; //# sourceMappingURL=conversation-identity.d.ts.map