using dotnetCampus.Ipc.CompilerServices.Attributes; namespace LanMountainDesktop.Shared.IPC.Abstractions.Services; [IpcPublic(IgnoresIpcException = true)] public interface IAirAppLifecycleService { Task OpenAsync(AirAppOpenRequest request); Task ActivateAsync(string instanceKey); Task CloseAsync(string instanceKey); Task GetInstancesAsync(); Task RegisterAsync(AirAppRegistrationRequest request); Task UnregisterAsync(string instanceKey, int processId); } public sealed record AirAppOpenRequest( string AppId, string? SourceComponentId, string? SourcePlacementId, int RequesterProcessId); public sealed record AirAppRegistrationRequest( string InstanceKey, string AppId, string SessionId, int ProcessId, string WindowTitle, string? SourceComponentId, string? SourcePlacementId); public sealed record AirAppInstanceInfo( string InstanceKey, string AppId, string SessionId, int ProcessId, string WindowTitle, string? SourceComponentId, string? SourcePlacementId, bool ProcessAlive, DateTimeOffset StartedAtUtc, DateTimeOffset UpdatedAtUtc); public sealed record AirAppOperationResult( bool Accepted, string Code, string Message, AirAppInstanceInfo? Instance);