type AsyncApi<T> = {
    [K in keyof T]: T[K] extends (...args: infer Args) => infer Return ? (...args: Args) => Promise<Return> : T[K];
};
type Theme = 'dark' | 'light';
interface ExternalFieldClientParentApi<Value = any, Config extends Record<string, unknown> = Record<string, unknown>> {
    getValue: () => Value | null;
    setValue: (value: Value | null | undefined) => void;
    getConfig: () => Config;
    setFullscreen?: (fullScreen: boolean) => Promise<void>;
    getFullscreen?: () => Promise<boolean>;
}
interface ExternalFieldClientChildApi<Value = any, Config extends Record<string, unknown> = Record<string, unknown>> {
    onChangeConfig: (changedConfig: Config) => void;
    onChangeValue: (changedValue: Value | null) => void;
    onChangeTheme: (theme: Theme) => void;
}

export type { AsyncApi, ExternalFieldClientChildApi, ExternalFieldClientParentApi, Theme };
