import { ResponsiveType, ManagedResponsiveScopeInput, ManagedResponsiveScopeOutput } from '../../../types/ui.type';
/**
 * A facade class for delegating format input with different responsive formatters given the flag:
 *
 * @requires ResponsivePaddingFormatter
 * @requires ResponsiveMarginFormatter
 * @requires ResponsiveGapFormatter
 * @requires ResponsiveColumnFormatter
 * @requires ResponsiveRowFormatter
 */
declare class ResponsiveFormatFacade {
  /**
   * It takes in a flag and a responsive type, and returns a formatted responsive type
   *
   * @typedef Flag key of ManagedResponsiveScopeInput
   * @param {ResponsiveType<ManagedResponsiveScopeInput[Flag]>} input - The input value to be formatted
   * @param {Flag} flag - The flag that is being formatted.
   * @returns {ManagedResponsiveScopeOutput[Flag]} The return type is a union of all the possible return types of the formatters.
   */
  format<Flag extends keyof ManagedResponsiveScopeInput>(input: ResponsiveType<ManagedResponsiveScopeInput[Flag]>, flag: Flag): ManagedResponsiveScopeOutput[Flag];
  /**
   * Given a responsive type and a flag, return the formatted CSS class string.
   *
   * @typedef T generic type parameter
   * @param {ResponsiveType<T>} input - ResponsiveType<T>
   * @returns {T} - return the formatted T.
   */
  formatCustom<T>(input: ResponsiveType<T>): T;
}
declare const _default: ResponsiveFormatFacade;
export default _default;
