/* eslint-disable */
import type { SlotRecipeRuntimeFn, RecipeVariantProps } from '../types/recipe';
import type { JsxHTMLProps, JsxStyleProps, Assign } from '../types/system-types';
import type { JsxFactoryOptions, DataAttrs, AsProps } from '../types/jsx';
import type { Component, FunctionalComponent, NativeElements } from 'vue'
interface UnstyledProps {
unstyled?: boolean | undefined
}
interface WithProviderOptions
{
defaultProps?: (Partial
& DataAttrs) | undefined
}
// Add v-model support types
interface VModelProps {
modelValue?: any
'onUpdate:modelValue'?: (value: any) => void
}
type SvaFn = SlotRecipeRuntimeFn
interface SlotRecipeFn {
__type: any
__slot: string
(props?: any): any
}
type SlotRecipe = SvaFn | SlotRecipeFn
type InferSlot = R extends SlotRecipeFn ? R['__slot'] : R extends SvaFn ? S : never
type IntrinsicElement = keyof NativeElements
type ElementType = IntrinsicElement | Component
type ComponentProps = T extends IntrinsicElement
? NativeElements[T]
: T extends Component
? Props
: never
type StyleContextProvider = FunctionalComponent<
JsxHTMLProps & UnstyledProps & AsProps & VModelProps, Assign, JsxStyleProps>>
>
type StyleContextRootProvider = FunctionalComponent<
ComponentProps & UnstyledProps & VModelProps & RecipeVariantProps
>
type StyleContextConsumer = FunctionalComponent<
JsxHTMLProps & UnstyledProps & AsProps & VModelProps, JsxStyleProps>
>
export interface StyleContext {
withRootProvider: (
Component: T,
options?: WithProviderOptions> | undefined
) => StyleContextRootProvider
withProvider: (
Component: T,
slot: InferSlot,
options?: JsxFactoryOptions> | undefined
) => StyleContextProvider
withContext: (
Component: T,
slot: InferSlot,
options?: JsxFactoryOptions> | undefined
) => StyleContextConsumer
}
export declare function createStyleContext(recipe: R): StyleContext