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

namespace Microsoft.Terminal.Settings.Model
{
    // This tag is used to identify the context in which this object was created
    enum OriginTag
    {
        None = 0,
        User,
        InBox,
        Generated,
        Fragment,
        ProfilesDefaults
    };

    interface ISettingsModelObject {
        OriginTag Origin { get; };
    }

    interface IMediaResource {
        String Path { get; };
        String Resolved { get; };
        void Resolve(String finalValue);
        void Reject();
        Boolean Ok { get; };
    };

    delegate void MediaResourceResolver(OriginTag origin, String basePath, IMediaResource resource);

    static runtimeclass MediaResourceHelper {
        static IMediaResource FromString(String s);
        static IMediaResource Empty();
    };
}
