import type { ControllerBindingInput } from 'gdc-common-utils-ts/models'; import type { FamilyOrganizationSummary } from 'gdc-common-utils-ts/utils/family-organization-summary'; import type { LegalOrganizationVerificationTransactionInput } from 'gdc-common-utils-ts/utils/legal-organization-verification-transaction'; import type { IndividualOrganizationLifecycleInput, OrganizationDidBindingInput } from 'gdc-sdk-core-ts'; import type { LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput } from '../resource-operations.js'; import type { AsyncPollRequest, OrganizationActivationServiceOptions, PollOptions, PollResult, SubmitAndPollResult, SubmitPayload, SubmitResponse } from 'gdc-sdk-core-ts'; export type { AsyncPollRequest, PollOptions, PollResult, SubmitAndPollResult, SubmitPayload, SubmitResponse, } from 'gdc-sdk-core-ts'; import type { EmployeeDeviceActivationResult, EmployeeDeviceActivationRequestInput, EmployeeDeviceRevocationInput } from '../device-activation.js'; import type { OrganizationEmployeeProvisioningInput, OrganizationEmployeeProvisioningResult } from '../organization-employee-lifecycle.js'; import type { OrganizationEmployeeLifecycleRecord } from 'gdc-common-utils-ts/models/organization-employee-lifecycle'; import type { HostRouteContext, HostedTenantLifecycleInput, LegalOrganizationOrderInput } from '../host-onboarding.js'; import type { IndividualOrganizationConfirmOrderInput, IndividualOrganizationOrderResult, RouteContext } from '../individual-onboarding.js'; import type { IndividualOrganizationBootstrapInput, IndividualOrganizationRegistrationInput, IndividualOrganizationRegistrationResult, IndividualOrganizationStartResult } from '../individual-start.js'; import type { FamilyOrganizationSearchInput } from '../family-organization-search.js'; import type { FhirR5SubscriptionTopic } from 'gdc-common-utils-ts/models/fhir-r5-subscription'; import type { FhirR5SubscriptionBatchInput } from '../fhir-r5-subscription-runtime.js'; import type { EnsureFamilyOrganizationRegistrationInput, EnsureFamilyOrganizationRegistrationResult } from '../family-organization-registration.js'; import type { OrganizationLicenseOrderConfirmInput } from '../organization-license-order.js'; import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js'; import type { DigitalTwinMaterializationInput, DigitalTwinSearchInput, DigitalTwinSelectionInput } from '../digital-twin.js'; import type { AuthorizedIndividualSubject, AuthorizedIndividualSubjectDirectoryInput } from '../authorized-subject-directory.js'; import type { CommunicationIngestionInput, BlockchainArtifactRegistrationInput, CommunicationParticipantRuntimeSearchInput, ClinicalBundleSearchInput, ClinicalSectionUpdateInput, SubjectSectionUpdateInput, ClinicalSummaryReadResult, ClinicalSummaryRequestInput, ClinicalSummaryUpdateInput, VitalSignBatchCommunicationFromSearchResponseInput, DigitalTwinGenerationInput, DigitalTwinSecondaryUseConsentInput, DigitalTwinSecondaryUseConsentResult, DigitalTwinSubjectLinkPurgeInput, DigitalTwinSubjectLinkPurgeResult, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IndividualMemberLifecycleInput, IndividualMemberLicenseAddInput, IndividualMemberLicenseInvitationInput, IndividualMemberLicenseTransitionInput, IpsOrFhirImportInput, OrganizationEmployeeCreationInput, OrganizationEmployeeLicenseAddInput, OrganizationEmployeeLicenseOfferInput, OrganizationEmployeeLicenseInvitationInput, OrganizationEmployeeLifecycleInput, OrganizationEmployeeSearchInput, ProfessionalAccessRequestInput, ProfessionalAccessRequestResult, RevokeProfessionalAccessInput, RevokeProfessionalAccessResult, RelatedPersonUpsertInput, SubjectConsentSearchInput } from '../resource-operations.js'; /** * Shared node-runtime activation input. * * Keep this centralized in the node runtime until every consumer compiles * against a published `gdc-sdk-core-ts` version that exports the same alias. */ export type NodeOrganizationActivationInput = { vpToken: string; controller?: ControllerBindingInput; service?: OrganizationActivationServiceOptions; additionalClaims?: Record; }; /** * Shared node-runtime input for the first host-side legal-organization * verification step. * * The business payload is owned by shared SDK/common packages: * - transport/runtime communication keys stay outside this contract * - controller business key binding remains in `controller.*` * - GW CORE host routing/polling stays in the runtime adapter */ export type NodeLegalOrganizationVerificationTransactionInput = LegalOrganizationVerificationTransactionInput; /** * Shared node-runtime input for the organization DID binding operation. * * Binding contract: * - tenant identity is resolved from the route path * - `organization.url` carries one or more public aliases/domains * - `controller.sameAs` is optional corroborating identity evidence */ export type NodeOrganizationDidBindingInput = OrganizationDidBindingInput; /** * Runtime-neutral actor/application client contract as exposed by the Node SDK. * * New code should prefer `RuntimeClient`. * `NodeRuntimeClient` is kept as a compatibility alias while package surfaces * converge across runtimes. */ export type RuntimeClient = { /** Registers a neutral FHIR R5 topic in GW CORE's tenant-owned catalog. */ submitFhirR5SubscriptionTopicBatch?: (ctx: RouteContext, topic: FhirR5SubscriptionTopic, pollOptions?: PollOptions) => Promise; /** Registers a tenant-wide or exact-subject FHIR R5 rest-hook Subscription. */ submitFhirR5SubscriptionBatch?: (ctx: RouteContext, input: FhirR5SubscriptionBatchInput, pollOptions?: PollOptions) => Promise; submitLegalOrganizationVerificationTransaction?: (hostCtx: HostRouteContext, input: NodeLegalOrganizationVerificationTransactionInput, pollOptions?: PollOptions) => Promise; submitLegalOrganizationCredentialReissuance?: (hostCtx: HostRouteContext, input: NodeLegalOrganizationVerificationTransactionInput, pollOptions?: PollOptions) => Promise; /** @deprecated Use `submitLegalOrganizationCredentialReissuance`. */ submitLegalOrganizationIssue?: (hostCtx: HostRouteContext, input: NodeLegalOrganizationVerificationTransactionInput, pollOptions?: PollOptions) => Promise; submitOrganizationDidBinding?: (ctx: RouteContext, input: NodeOrganizationDidBindingInput, pollOptions?: PollOptions) => Promise; activateOrganizationInGatewayFromIcaProof?: (hostCtx: HostRouteContext, input: NodeOrganizationActivationInput, pollOptions?: PollOptions) => Promise; confirmLegalOrganizationOrder?: (hostCtx: HostRouteContext, input: LegalOrganizationOrderInput, pollOptions?: PollOptions) => Promise; submitVitalSignBatchCommunicationFromSearchResponse?: (ctx: RouteContext, input: VitalSignBatchCommunicationFromSearchResponseInput) => Promise; disableHost?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise; purgeHost?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise; disableTenant?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise; enableTenant?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise; purgeTenant?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise; getTenantLifecycleStatus?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise; disableTenantDescendants?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput & { descendantKind: 'individuals'; }, pollOptions?: PollOptions) => Promise; purgeTenantDescendants?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput & { descendantKind: 'individuals'; }, pollOptions?: PollOptions) => Promise; createOrganizationEmployee?: (ctx: RouteContext, input: OrganizationEmployeeCreationInput, pollOptions?: PollOptions) => Promise; provisionOrganizationEmployee?: (ctx: RouteContext, input: OrganizationEmployeeProvisioningInput) => Promise; issueOrganizationEmployeeLicense?: (ctx: RouteContext, input: OrganizationEmployeeLicenseInvitationInput) => Promise; searchOrganizationEmployees?: (ctx: RouteContext, input: OrganizationEmployeeSearchInput) => Promise; listOrganizationEmployeeLifecycle?: (ctx: RouteContext) => Promise; searchOrganizationLicenses?: (ctx: RouteContext, input: LicenseListRuntimeSearchInput) => Promise; listOrganizationLicenses?: (ctx: RouteContext, input?: LicenseListRuntimeSearchInput) => Promise; addFreeOrganizationEmployeeLicenses?: (ctx: RouteContext, input: OrganizationEmployeeLicenseAddInput) => Promise; requestOrganizationEmployeeLicenseOffer?: (ctx: RouteContext, input: OrganizationEmployeeLicenseOfferInput) => Promise; searchOrganizationLicenseOffers?: (ctx: RouteContext, input: LicenseOfferRuntimeSearchInput) => Promise; listOrganizationLicenseOffers?: (ctx: RouteContext, input?: LicenseOfferRuntimeSearchInput) => Promise; searchOrganizationLicenseOrders?: (ctx: RouteContext, input: LicenseOrderRuntimeSearchInput) => Promise; listOrganizationLicenseOrders?: (ctx: RouteContext, input?: LicenseOrderRuntimeSearchInput) => Promise; confirmOrganizationLicenseOrder?: (ctx: RouteContext, input: OrganizationLicenseOrderConfirmInput, pollOptions?: PollOptions) => Promise; disableEmployee?: (ctx: RouteContext, input: OrganizationEmployeeLifecycleInput, pollOptions?: PollOptions) => Promise; purgeEmployee?: (ctx: RouteContext, input: OrganizationEmployeeLifecycleInput, pollOptions?: PollOptions) => Promise; disableOrganizationEmployee?: (ctx: RouteContext, input: OrganizationEmployeeLifecycleInput, pollOptions?: PollOptions) => Promise; purgeOrganizationEmployee?: (ctx: RouteContext, input: OrganizationEmployeeLifecycleInput, pollOptions?: PollOptions) => Promise; activateEmployeeDeviceWithActivationRequest?: (input: EmployeeDeviceActivationRequestInput) => Promise; revokeEmployeeDevice?: (ctx: RouteContext, input: EmployeeDeviceRevocationInput) => Promise; requestSmartToken?: (input: SmartTokenRequestInput) => Promise; registerIndividualOrganization?: (input: IndividualOrganizationRegistrationInput) => Promise; /** @deprecated Use `registerIndividualOrganization`. */ startIndividualOrganization?: (input: IndividualOrganizationRegistrationInput) => Promise; searchFamilyOrganization?: (ctx: RouteContext, input: FamilyOrganizationSearchInput) => Promise; ensureFamilyOrganizationRegistration?: (ctx: RouteContext, input: EnsureFamilyOrganizationRegistrationInput) => Promise; confirmIndividualOrganizationOrder?: (input: IndividualOrganizationConfirmOrderInput) => Promise; disableIndividual?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise; purgeIndividual?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise; disableIndividualMember?: (ctx: RouteContext, input: IndividualMemberLifecycleInput, pollOptions?: PollOptions) => Promise; purgeIndividualMember?: (ctx: RouteContext, input: IndividualMemberLifecycleInput, pollOptions?: PollOptions) => Promise; disableIndividualOrganization?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise; purgeIndividualOrganization?: (ctx: RouteContext, input: IndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise; ingestCommunicationAndUpdateIndex?: (ctx: RouteContext, input: CommunicationIngestionInput) => Promise; requestProfessionalAccess?: (ctx: RouteContext, input: ProfessionalAccessRequestInput) => Promise; updateClinicalSection?: (ctx: RouteContext, input: ClinicalSectionUpdateInput) => Promise; updateSubjectSection?: (ctx: RouteContext, input: SubjectSectionUpdateInput) => Promise; updateClinicalSummary?: (ctx: RouteContext, input: ClinicalSummaryUpdateInput) => Promise; requestClinicalSummary?: (ctx: RouteContext, input: ClinicalSummaryRequestInput) => Promise; registerBlockchainArtifactAndUpdateIndex?: (ctx: RouteContext, input: BlockchainArtifactRegistrationInput) => Promise; searchCommunicationParticipants?: (ctx: RouteContext, input: CommunicationParticipantRuntimeSearchInput) => Promise; grantProfessionalAccess?: (ctx: RouteContext, input: GrantProfessionalAccessInput) => Promise; revokeProfessionalAccess?: (ctx: RouteContext, input: RevokeProfessionalAccessInput) => Promise; searchIndividualLicenses?: (ctx: RouteContext, input: LicenseListRuntimeSearchInput) => Promise; listIndividualLicenses?: (ctx: RouteContext, input?: LicenseListRuntimeSearchInput) => Promise; /** Lists exact subjects already authorized for one verified OpenID contact. */ listAuthorizedIndividualSubjects?: (ctx: RouteContext, input: AuthorizedIndividualSubjectDirectoryInput) => Promise; addFreeIndividualMemberLicenses?: (ctx: RouteContext, input: IndividualMemberLicenseAddInput) => Promise; issueIndividualMemberLicense?: (ctx: RouteContext, input: IndividualMemberLicenseInvitationInput) => Promise; transitionIndividualMemberLicense?: (ctx: RouteContext, action: '_accept' | '_deactivate' | '_release', input: IndividualMemberLicenseTransitionInput) => Promise; searchIndividualLicenseOffers?: (ctx: RouteContext, input: LicenseOfferRuntimeSearchInput) => Promise; listIndividualLicenseOffers?: (ctx: RouteContext, input?: LicenseOfferRuntimeSearchInput) => Promise; searchIndividualLicenseOrders?: (ctx: RouteContext, input: LicenseOrderRuntimeSearchInput) => Promise; listIndividualLicenseOrders?: (ctx: RouteContext, input?: LicenseOrderRuntimeSearchInput) => Promise; bootstrapIndividualOrganization?: (input: IndividualOrganizationBootstrapInput) => Promise; /** * @deprecated Direct Composition compatibility hook. Use the * Communication-backed clinical summary or subject-section hooks. */ importIpsOrFhirAndUpdateIndex?: (ctx: RouteContext, input: IpsOrFhirImportInput) => Promise; upsertRelatedPersonAndPoll?: (ctx: RouteContext, input: RelatedPersonUpsertInput) => Promise; generateDigitalTwinFromSubjectData?: (ctx: RouteContext, input: DigitalTwinGenerationInput) => Promise; setDigitalTwinSecondaryUseConsent?: (ctx: RouteContext, input: DigitalTwinSecondaryUseConsentInput) => Promise; purgeDigitalTwinSubjectLink?: (ctx: RouteContext, input: DigitalTwinSubjectLinkPurgeInput) => Promise; searchSubjectConsents?: (ctx: RouteContext, input: SubjectConsentSearchInput) => Promise; searchClinicalBundle?: (ctx: RouteContext, input: ClinicalBundleSearchInput) => Promise; searchDigitalTwins?: (ctx: RouteContext, input: DigitalTwinSearchInput) => Promise; saveDigitalTwinSelection?: (ctx: RouteContext, input: DigitalTwinSelectionInput) => Promise; materializeDigitalTwin?: (ctx: RouteContext, input: DigitalTwinMaterializationInput) => Promise; getLatestIps?: (ctx: RouteContext, input: Omit) => Promise; submitBatch?: (submitPath: string, payload: SubmitPayload) => Promise; pollUntilComplete?: (pollPath: string, request: AsyncPollRequest, pollOptions?: PollOptions) => Promise; submitAndPoll?: (submitPath: string, pollPath: string, payload: SubmitPayload, pollOptions?: PollOptions) => Promise; }; /** * @deprecated Prefer `RuntimeClient`. */ export type NodeRuntimeClient = RuntimeClient; export declare function requireClientMethod(client: RuntimeClient, method: T): NonNullable; export declare function submitAndPollWithMethods(methods: Pick, submitPath: string, pollPath: string, payload: SubmitPayload, pollOptions?: PollOptions): Promise; export declare function canClientSubmitAndPoll(client: NodeRuntimeClient): boolean; export declare function submitAndPollWithClient(client: RuntimeClient, submitPath: string, pollPath: string, payload: SubmitPayload, pollOptions?: PollOptions): Promise;