package org.implab.gradle.variants.artifacts;

import org.eclipse.jdt.annotation.NonNullByDefault;

/**
 * Resolves stateful slot assemblies from cheap slot identities.
 *
 * <p>The returned assembly is a materialized build-model handle. It may expose lazy Gradle providers, but
 * it is no longer an identity object suitable for replayable discovery.
 */
@NonNullByDefault
public interface ArtifactAssemblies {
    /**
     * Resolves the assembly for the given slot.
     *
     * <p>This call materializes the build-facing body of the slot from its identity.
     *
     * @param slot slot identity inside a variant outgoing contract
     * @return assembly handle for the slot
     */
    ArtifactAssembly resolveSlot(ArtifactSlot slot);
}
