import type { CredentialHealth, CredentialInstanceId, CredentialMaterialSourceKind, CredentialRequirement, CredentialSetupStatus, CredentialTypeDefinition, CredentialTypeId, } from "@codemation/core"; export type CredentialInstanceDto = Readonly<{ instanceId: CredentialInstanceId; typeId: CredentialTypeId; displayName: string; sourceKind: CredentialMaterialSourceKind; publicConfig: Readonly>; tags: ReadonlyArray; setupStatus: CredentialSetupStatus; createdAt: string; updatedAt: string; latestHealth?: CredentialHealth; oauth2Connection?: CredentialOAuth2ConnectionDto; }>; export type CredentialOAuth2ConnectionDto = Readonly<{ status: "connected" | "disconnected"; providerId: string; connectedEmail?: string; connectedAt?: string; scopes: ReadonlyArray; updatedAt?: string; }>; export type CredentialInstanceWithSecretsDto = CredentialInstanceDto & Readonly<{ secretConfig?: Readonly>; envSecretRefs?: Readonly>; }>; export type WorkflowCredentialHealthSlotDto = Readonly<{ workflowId: string; nodeId: string; nodeName?: string; requirement: CredentialRequirement; instance?: Pick; health: Readonly<{ status: "unbound" | "optional-unbound" | "unknown" | "healthy" | "failing"; message?: string; testedAt?: string; }>; }>; export type WorkflowCredentialHealthDto = Readonly<{ workflowId: string; slots: ReadonlyArray; }>; export type CreateCredentialInstanceRequest = Readonly<{ typeId: CredentialTypeId; displayName: string; sourceKind: CredentialMaterialSourceKind; publicConfig?: Readonly>; secretConfig?: Readonly>; envSecretRefs?: Readonly>; tags?: ReadonlyArray; }>; export type UpdateCredentialInstanceRequest = Readonly<{ displayName?: string; publicConfig?: Readonly>; secretConfig?: Readonly>; envSecretRefs?: Readonly>; tags?: ReadonlyArray; setupStatus?: CredentialSetupStatus; }>; export type UpsertCredentialBindingRequest = Readonly<{ workflowId: string; nodeId: string; slotKey: string; instanceId: CredentialInstanceId; }>; export type AppGalleryEntry = Readonly<{ mcpId: string; displayName: string; description: string; iconUrl: string | null; acceptedCredentialTypes: ReadonlyArray; primaryOAuthTypeId: string | null; instances: ReadonlyArray; }>; export type AppsResponse = Readonly<{ apps: ReadonlyArray; customInstances: ReadonlyArray; }>; export class CredentialResponseMapper { static toTypeDefinitionList(types: ReadonlyArray): ReadonlyArray { return [...types]; } }