import type { TSecretManagementScope } from '../data/secret.js'; import type { IObjectStorageRetentionBindingV1 } from './objectstorageretention.js'; export type TPlatformCapability = 'email' | 'sms' | 'pushnotification' | 'letter' | 'ai' | 'database' | 'objectstorage' | 'logging' | 'backup' | 'sip'; export type TPlatformAccessMode = 'rpc' | 'binding' | 'sidecar' | 'internal'; export type TPlatformBindingStatus = 'requested' | 'provisioning' | 'ready' | 'degraded' | 'failed' | 'disabled'; export type TPlatformDesiredState = 'enabled' | 'disabled'; export type TPlatformEndpointProtocol = 'typedrequest' | 'http' | 'tcp' | 'udp' | 'smtp' | 's3' | 'postgres' | 'mongodb' | 'sip'; export interface IPlatformCapability { id: TPlatformCapability; title: string; description?: string; accessMode: TPlatformAccessMode; defaultProviderType?: string; } export interface IPlatformProviderConfig { id: string; capability: TPlatformCapability; providerType: string; name: string; enabled: boolean; /** Value-free owner scope; provider-specific operational config stays adapter-internal. */ credentialManagementScope?: Extract; } export interface IPlatformServiceEndpoint { name: string; capability: TPlatformCapability; protocol: TPlatformEndpointProtocol; internalUrl?: string; externalUrl?: string; networkAlias?: string; port?: number; } export interface IPlatformBinding { id: string; serviceId: string; capability: TPlatformCapability; desiredState: TPlatformDesiredState; status: TPlatformBindingStatus; providerConfigId?: string; endpoints?: IPlatformServiceEndpoint[]; /** Value-free reconciliation scope for service-owned credentials. */ credentialManagementScope?: Extract; /** Durable Cloudly authority for the exact Corestore object-storage bucket. */ objectstorageBucketName?: string; /** Capability-specific value-free immutable-retention intent and evidence. */ objectstorageRetention?: IObjectStorageRetentionBindingV1; createdAt?: number; updatedAt?: number; }