import { Component } from '@action-land/component';
declare type anyComponent = Component<any, any, any, any>;
declare type NState<T> = T & {
    '@@forward': {
        keys: Array<string>;
    };
};
declare type ComponentSpec = {
    [key: string]: anyComponent;
};
declare type ComponentState<T extends anyComponent> = T extends Component<infer S, unknown, unknown[], unknown> ? S : unknown;
declare type ChildStateSpec<T extends ComponentSpec> = {
    [k in keyof T]: ComponentState<T[k]>;
};
export declare const AutoForward: <T extends ComponentSpec>(spec: T) => <State extends ChildStateSpec<T>, Params, Init extends any[], VNode>(component: Component<State, Params, Init, VNode>) => Component<NState<State>, Params, Init, VNode>;
export {};
