import type { RouteContext } from '../individual-onboarding.js'; import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js'; import type { DigitalTwinMaterializationInput, DigitalTwinSelectionInput, DigitalTwinSearchInput, DigitalTwinSearchResult } from '../digital-twin.js'; import { type NodeRuntimeClient, type SubmitAndPollResult } from './client-port.js'; /** Public research facade for licensed digital-twin access. */ export declare class DigitalTwinSdk { private readonly client; private smartAccessToken?; private researcherDid?; constructor(client: NodeRuntimeClient, actorDid?: string); /** Requests the SMART token used by subsequent digital-twin operations. */ requestSmartToken(input: SmartTokenRequestInput): Promise; /** * Searches the public `ResearchSubject/_search` aggregate with FHIR * Parameters. The high-level match normalizes either mixed claims-first * `meta.claims` or a versioned FHIR `contained[]` Composition. Callers never * need to navigate either transport representation. * * MVP basic search supplies `sections`, `dateFrom`, optional `dateTo`, and * `text`. GW resolves an omitted `dateTo` to its current time, applies OR * across sections and requires text/date to match the same clinical record. * Organization/tenant scope comes from the authenticated SMART token. */ search(ctx: RouteContext, input: DigitalTwinSearchInput): Promise; /** * Saves a tagged researcher-owned working selection for one matching twin. * The canonical clinical twin is never modified. */ saveSelection(ctx: RouteContext, input: DigitalTwinSelectionInput): Promise; /** * Reopens this employee's saved ResearchSubjects through the same public * route. The tag is combined with an author filter bound to the actor DID; * GW verifies that author against the authenticated SMART `sub`. */ searchSelections(ctx: RouteContext, input: Omit & { section: string; tag: Readonly<{ system: string; code: string; }>; }): Promise; /** Materializes one selected research subject through `ResearchSubject/$summary`. */ materialize(ctx: RouteContext, input: DigitalTwinMaterializationInput): Promise; }