import React from 'react';
import type { ElementType } from 'react';
import { DistributiveOmit, RefOf } from '../types';
type Merge<A, B> = DistributiveOmit<A, keyof B> & B;
type ConditionalMap = {
    default: ElementType;
    [key: string]: ElementType;
};
/**
 * Утилита для создания компонента, который выбирает реализацию по `appearance`
 * и при этом сохраняет корректную типизацию пропсов и ref для каждого варианта.
 */
export declare function createConditionalComponent<T extends ConditionalMap>(components: T): React.ForwardRefExoticComponent<(React.PropsWithoutRef<Merge<React.PropsWithoutRef<React.ComponentProps<T["default"]>>, {
    appearance?: "default";
}>> | React.PropsWithoutRef<{ [K in Exclude<keyof T, "default">]: Merge<React.PropsWithoutRef<React.ComponentProps<T[K]>>, {
    appearance: K;
}>; }[Exclude<keyof T, "default">]>) & React.RefAttributes<RefOf<T[keyof T]>>>;
export {};
//# sourceMappingURL=createConditionalComponent.d.ts.map