// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import "Peasant.idl";

namespace Microsoft.Terminal.Remoting
{

    [default_interface] runtimeclass FindTargetWindowArgs {
        CommandlineArgs Args { get; };
        Int32 ResultTargetWindow;
        String ResultTargetWindowName;
    }

    [default_interface] runtimeclass ProposeCommandlineResult {
        Windows.Foundation.IReference<UInt64> Id { get; };
        String WindowName { get; };
        Boolean ShouldCreateWindow { get; }; // If you name this `CreateWindow`, the compiler will explode
    }

    [default_interface] runtimeclass SummonWindowSelectionArgs {
        SummonWindowSelectionArgs();
        SummonWindowSelectionArgs(String windowName);
        String WindowName;
        Boolean OnCurrentDesktop;
        // TODO GH#8888 Other options:
        // * CurrentMonitor

        Boolean FoundMatch;
        SummonWindowBehavior SummonBehavior;
    }


    [default_interface] runtimeclass Monarch {
        Monarch();

        UInt64 GetPID();
        UInt64 AddPeasant(IPeasant peasant);
        ProposeCommandlineResult ProposeCommandline(CommandlineArgs args);
        void HandleActivatePeasant(WindowActivatedArgs args);
        void SummonWindow(SummonWindowSelectionArgs args);

        event Windows.Foundation.TypedEventHandler<Object, FindTargetWindowArgs> FindTargetWindowRequested;
    };
}
