import { ReactiveAdapterParam, ReactiveEventParameters, ReactiveState, ReactiveSubscribe } from "@cfcs/core";
import { Ref } from "vue";
export declare type ReactiveEvents<Events extends Record<string, any>> = {
    [K in keyof Events as `on${Capitalize<string & K>}`]: (callback: ((...args: ReactiveEventParameters<Events, K & string>) => void)) => void;
};
export declare type ReactiveResult<Instance extends ReactiveSubscribe<Record<string, any>>, State extends Record<string, any> = ReactiveState<Instance>, Methods extends keyof Partial<Instance> = any, Events extends Record<string, any> = {}> = {
    [key in keyof State]: Ref<State[key]>;
} & {
    [key in Methods]: Instance[key];
} & ReactiveEvents<Events>;
export declare type ReactiveLegacyResult<Instance extends ReactiveSubscribe<Record<string, any>>, State extends Record<string, any> = ReactiveState<Instance>, Methods extends keyof Partial<Instance> = any, Events extends Record<string, any> = {}> = State & {
    [key in Methods]: Instance[key];
} & ReactiveEvents<Events>;
export declare type ReactiveLegacyAdapterResult<Adapter extends ReactiveAdapterParam<any, any, any, any, any>> = Adapter extends ReactiveAdapterParam<infer Instance, infer State, infer Methods, any, infer Events> ? ReactiveLegacyResult<Instance, State, Methods, Events> : {};
export declare type ReactiveAdapterResult<Adapter extends ReactiveAdapterParam<any, any, any, any, any>> = Adapter extends ReactiveAdapterParam<infer Instance, infer State, infer Methods, any, infer Events> ? VueReactiveResult<Instance, State, Methods, Events> : {};
export declare type VueReactiveEvents<Events extends Record<string, any>> = ReactiveEvents<Events>;
export declare type VueReactiveResult<Instance extends ReactiveSubscribe<Record<string, any>>, State extends Record<string, any> = ReactiveState<Instance>, Methods extends keyof Partial<Instance> = any, Events extends Record<string, any> = {}> = ReactiveResult<Instance, State, Methods, Events>;
export declare type VueReactiveAdapterResult<Adapter extends ReactiveAdapterParam<any, any, any, any, any>> = ReactiveAdapterResult<Adapter>;
