/** * IPEX exchange route family for registry-backed ACDC workflows. * * KERIpy correspondence: * - mirrors `keri.vc.protocoling` route registration, previous-route * validation, duplicate-response prevention, builders, and notifier payloads * * Boundary: * - this module owns IPEX `exn` shape and route behavior only * - credential/TEL artifact ingestion remains VDR/runtime work */ import type { Kind, SerderKERI, Versionage } from "../../../cesr/mod.js"; import type { Exchanger, ExchangeRouteHandler } from "./exchanging.js"; import type { Hab, Habery } from "./habbing.js"; import type { Notifier } from "./notifying.js"; /** KERIpy IPEX route constants. */ export declare const IPEX_APPLY_ROUTE = "/ipex/apply"; export declare const IPEX_OFFER_ROUTE = "/ipex/offer"; export declare const IPEX_AGREE_ROUTE = "/ipex/agree"; export declare const IPEX_GRANT_ROUTE = "/ipex/grant"; export declare const IPEX_ADMIT_ROUTE = "/ipex/admit"; export declare const IPEX_SPURN_ROUTE = "/ipex/spurn"; /** Ordered route list used for registration and tests. */ export declare const IPEX_ROUTES: readonly ["/ipex/apply", "/ipex/offer", "/ipex/agree", "/ipex/grant", "/ipex/admit", "/ipex/spurn"]; export type IpexRoute = typeof IPEX_ROUTES[number]; export type IpexVerb = "apply" | "offer" | "agree" | "grant" | "admit" | "spurn"; /** Previous-route policy from KERIpy `PreviousRoutes`. */ export declare const PREVIOUS_IPEX_ROUTES: ReadonlyMap; interface RawMessage { readonly raw: Uint8Array; } export interface IpexHandlerOptions { notifier?: Notifier | null; } export interface IpexBuilderOptions { stamp?: string; date?: string; version?: Versionage; pvrsn?: Versionage; gvrsn?: Versionage | null; kind?: Kind; } export type IpexMessage = readonly [serder: SerderKERI, attachments: Uint8Array]; export interface IpexGrantOptions extends IpexBuilderOptions { iss?: Uint8Array | RawMessage | null; anc?: Uint8Array | RawMessage | null; agree?: SerderKERI | null; } /** * Accepted IPEX route handler. * * The handler verifies route-local conversation rules before `Exchanger` logs * accepted state, so the existing `erpy` prior-response index can enforce * KERIpy's one-response-per-prior invariant. */ export declare class IpexHandler implements ExchangeRouteHandler { readonly resource: IpexRoute; private readonly hby; private readonly notifier; constructor(resource: IpexRoute, hby: Habery, notifier?: Notifier | null); verify(args: { serder: SerderKERI; }): boolean; handle(args: { serder: SerderKERI; }): void; private hasPriorResponse; } /** Register all KERIpy IPEX routes with one exchanger. */ export declare function loadIpexHandlers(hby: Habery, exchanger: Exchanger, options?: IpexHandlerOptions): void; /** Apply for an ACDC. */ export declare function ipexApplyExn(hab: Hab, recp: string, message: string, schema: unknown, attrs: unknown, options?: IpexBuilderOptions): IpexMessage; /** Offer a metadata ACDC, optionally as a response to an apply. */ export declare function ipexOfferExn(hab: Hab, message: string, acdc: Uint8Array | RawMessage, apply?: SerderKERI | null, options?: IpexBuilderOptions): IpexMessage; /** Agree to an offer. */ export declare function ipexAgreeExn(hab: Hab, message: string, offer: SerderKERI, options?: IpexBuilderOptions): IpexMessage; /** Disclose an ACDC, optionally as a response to an agree. */ export declare function ipexGrantExn(hab: Hab, recp: string, message: string, acdc: Uint8Array | RawMessage, options?: IpexGrantOptions): IpexMessage; /** Admit a disclosure. */ export declare function ipexAdmitExn(hab: Hab, message: string, grant: SerderKERI, options?: IpexBuilderOptions): IpexMessage; /** Reject an application, offer, agreement, or grant. */ export declare function ipexSpurnExn(hab: Hab, message: string, spurned: SerderKERI, options?: IpexBuilderOptions): IpexMessage; export {}; //# sourceMappingURL=ipexing.d.ts.map