// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

namespace OpenTelemetry.AutoInstrumentation;

internal static partial class InstrumentationDefinitions
{
    private static readonly string AssemblyFullName = typeof(InstrumentationDefinitions).Assembly.FullName!;

    internal static Payload GetAllDefinitions()
    {
        return new Payload
        {
            // Fixed Id for definitions payload (to avoid loading same integrations from multiple AppDomains)
            DefinitionsId = "FFAFA5168C4F4718B40CA8788875C2DA",

            // Autogenerated definitions array
            Definitions = GetDefinitionsArray(),
        };
    }

    internal static Payload GetDerivedDefinitions()
    {
        return new Payload
        {
            // Fixed Id for definitions payload (to avoid loading same integrations from multiple AppDomains)
            DefinitionsId = "61BF627FA9B5477F85595A9F0D68B29C",

            // Autogenerated definitions array
            Definitions = GetDerivedDefinitionsArray(),
        };
    }

    internal struct Payload
    {
        public string DefinitionsId { get; set; }

        public NativeCallTargetDefinition[] Definitions { get; set; }
    }
}
