// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package com.android.tools.r8.profile.art;

import com.android.tools.r8.Keep;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;

/**
 * API for consuming rules from an ART profile. The compiler will call the methods {@link
 * #acceptClassRule} and {@link #acceptMethodRule} for each class and method rule (respectively) in
 * the profile.
 */
@Keep
public interface ArtProfileRuleConsumer {

  /** Provides information about a specific class rule to the consumer. */
  void acceptClassRule(ClassReference classReference, ArtProfileClassRuleInfo classRuleInfo);

  /** Provides information about a specific method rule to the consumer. */
  void acceptMethodRule(MethodReference methodReference, ArtProfileMethodRuleInfo methodRuleInfo);
}
