import type { ClinicalCreatorBinding } from 'gdc-common-utils-ts/utils/fhir-ips-creator-identity'; import type { PollOptions, SubmitAndPollResult } from './orchestration/client-port.js'; import type { RouteContext } from './individual-onboarding.js'; export type EmployeeDeviceActivationInput = { activationCode: string; idToken: string; dcrPayload: Record; pollOptions?: PollOptions; }; export type EmployeeDeviceActivationRequestInput = { tenantId?: string; jurisdiction?: string; sector?: string; activationCode: string; idToken: string; /** Canonical high-level description converted to OpenID DCR metadata by the SDK. */ deviceRegistration?: ProfileDeviceRegistrationInput; /** * @deprecated Low-level OpenID escape hatch. Use * `createProfileDeviceActivationRequest(...).set...build()` instead. */ dcrPayload?: Record; timeoutSeconds?: number; intervalSeconds?: number; }; /** Application concepts required to bind one portal/app installation. */ export type ProfileDeviceRegistrationInput = Readonly<{ clientInstanceId: string; clientName: string; applicationType: 'native' | 'web'; redirectUris: readonly string[]; publicJwks: readonly Record[]; deviceName?: string; actorDid?: string; profileDid?: string; clinicalCreatorBinding?: ClinicalCreatorBinding; }>; /** Advanced typed editor used by SDK runtimes that already own profile keys. */ export interface ProfileDeviceActivationDraft { setClientInstanceId(value: string): ProfileDeviceActivationDraft; setClientName(value: string): ProfileDeviceActivationDraft; setApplicationType(value: 'native' | 'web'): ProfileDeviceActivationDraft; setRedirectUris(values: readonly string[]): ProfileDeviceActivationDraft; setPublicJwks(values: readonly Record[]): ProfileDeviceActivationDraft; setDeviceName(value: string): ProfileDeviceActivationDraft; setActorDid(value: string): ProfileDeviceActivationDraft; setProfileDid(value: string): ProfileDeviceActivationDraft; setClinicalCreatorBinding(value: ClinicalCreatorBinding): ProfileDeviceActivationDraft; setTimeoutSeconds(value: number): ProfileDeviceActivationDraft; setIntervalSeconds(value: number): ProfileDeviceActivationDraft; build(): EmployeeDeviceActivationRequestInput & { deviceRegistration: ProfileDeviceRegistrationInput; }; } /** * Starts an advanced profile-device activation request. * * Product portals should normally use `ServerProfileSessionManager.enroll`, * which provisions the wallet and calls this editor internally. This surface * exists for runtimes that already own and select the profile public keys. */ export declare function createProfileDeviceActivationRequest(input: Readonly<{ activationCode: string; idToken: string; tenantId?: string; jurisdiction?: string; sector?: string; }>): ProfileDeviceActivationDraft; export type EmployeeDeviceActivationResult = { initialAccessToken: string; exchange: SubmitAndPollResult; dcr: SubmitAndPollResult; }; export type EmployeeDeviceOtpRecoveryInput = Readonly<{ idToken: string; clientInstanceId: string; pollOptions?: PollOptions; }>; export type EmployeeDeviceOtpRecoveryResult = Readonly<{ activationCode: string; licenseId: string; employeeRole: string; employeeActorIdentifier: string; recovery: SubmitAndPollResult; }>; /** Requests a fresh replacement credential for one OTP-authenticated installation. */ export declare function recoverEmployeeDeviceWithOtpWithDeps(deps: Readonly<{ routeCtx: RouteContext; input: EmployeeDeviceOtpRecoveryInput; identityEmployeeRecoveryPath: (ctx: RouteContext) => string; identityEmployeeRecoveryPollPath: (ctx: RouteContext) => string; submitAndPollWithBearerToken: (bearerToken: string | undefined, submitPath: string, pollPath: string, payload: { thid?: string; } & Record, pollOptions?: PollOptions) => Promise; }>): Promise; export type EmployeeDeviceRevocationInput = { licenseId: string; clientId: string; requestThid?: string; pollOptions?: PollOptions; }; export declare function revokeEmployeeDeviceWithDeps(deps: { routeCtx: RouteContext; input: EmployeeDeviceRevocationInput; identityDeviceRevokePath: (ctx: RouteContext) => string; identityDeviceRevokePollPath: (ctx: RouteContext) => string; submitAndPoll: (submitPath: string, pollPath: string, payload: { thid?: string; } & Record, pollOptions?: PollOptions) => Promise; }): Promise; type ActivateEmployeeDeviceDeps = { routeCtx: RouteContext; input: EmployeeDeviceActivationInput; identityTokenExchangePath: (ctx: RouteContext) => string; identityTokenExchangePollPath: (ctx: RouteContext) => string; identityDeviceDcrPath: (ctx: RouteContext) => string; identityDeviceDcrPollPath: (ctx: RouteContext) => string; submitAndPollWithBearerToken: (bearerToken: string | undefined, submitPath: string, pollPath: string, payload: { thid?: string; } & Record, pollOptions?: PollOptions) => Promise; }; type ActivateEmployeeDeviceRequestDeps = { routeCtx: RouteContext; input: EmployeeDeviceActivationRequestInput; defaultTimeoutMs?: number; defaultIntervalMs?: number; activateEmployeeDeviceWithActivationCode: (routeCtx: RouteContext, input: EmployeeDeviceActivationInput) => Promise; }; export declare function activateEmployeeDeviceWithActivationCodeWithDeps(deps: ActivateEmployeeDeviceDeps): Promise; export declare function activateEmployeeDeviceWithActivationRequestWithDeps(deps: ActivateEmployeeDeviceRequestDeps): Promise; export {};