import { CssStatesType, ManagedStateScopeInput, StateVariantType } from '../../../types/ui.type';
import { StateFormatter } from './state-formatter';
/**
 * StateVariantFormatter: Format state token to CSS styles
 */
export declare abstract class StateVariantFormatter<Flag extends keyof ManagedStateScopeInput> implements StateFormatter<ManagedStateScopeInput[Flag], string> {
  /**
   * The function `format` takes an input state variant type and returns formatted CSS styles based on
   * the input.
   *
   * @param {StateVariantType} input - The `format` function takes an `input` parameter of type
   * `StateVariantType<ManagedStateScopeInput[Flag], State>`. This means that the `input` parameter
   * should be an object that contains styles for different states, where the keys are state names and
   * the values are the corresponding styles
   * @returns {string} The `format` function returns a string that contains CSS styles based on the input
   * provided. If the input is determined to be a state variant token type, the function generates CSS
   * styles for each state in the input and returns them joined by newlines. If the input is not a state
   * variant token type, the function generates CSS styles for the default state and returns them.
   */
  format<State extends CssStatesType>(input: StateVariantType<ManagedStateScopeInput[Flag], State>): string;
  abstract formatToken(input: ManagedStateScopeInput[Flag]): string;
  abstract getStates(): CssStatesType[];
}
