import React from 'react';

type EmptyObject = Record<string, never>;
type CreateSlotIdentifier = <T>() => (_: T) => T;
declare const createSlotIdentifier: CreateSlotIdentifier;
type SlotFunction<T> = (_: T) => T;
type Payload<T> = <R>(params: {
    component: (props: unknown extends R ? EmptyObject : R extends void ? EmptyObject : R) => JSX.Element;
    fn?: (arg: T) => R;
    order?: number;
}) => void;
declare const createSlots: <T extends Record<string, SlotFunction<any>>>(config: T) => {
    slotsApi: {
        insert: {
            into: { [key in keyof T]: T[key] extends (_: any) => unknown ? Payload<Parameters<T[key]>[0]> : never; };
        };
    };
    Slots: { [key_1 in keyof T]: React.FunctionComponent<Parameters<T[key_1]>[0]>; };
};

export { type EmptyObject, createSlotIdentifier, createSlots };
