import { A as Definition, C as Rules, S as DehydratedState, g as Permix, l as CheckArgs } from "../index-BYcbfVQ7.mjs";
import { PropType, SetupContext, SlotsType, VNode } from "vue";

//#region src/vue/components.d.ts
/**
 * Provides Permix context to the Vue component tree.
 *
 * @link https://permix.letstri.dev/docs/integrations/vue
 */
declare const PermixProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
  permix: {
    type: PropType<Permix<any>>;
    required: true;
  };
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
  [key: string]: any;
}>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
  permix: {
    type: PropType<Permix<any>>;
    required: true;
  };
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
interface CheckProps<D extends Definition> {
  path: CheckArgs<D>[0];
  data?: CheckArgs<D>[1];
  reverse?: boolean;
}
type CheckContext = SetupContext<any, SlotsType<{
  default: void;
  otherwise?: void;
}>>;
interface PermixComponents<D extends Definition> {
  Check: (props: CheckProps<D>, context: CheckContext) => VNode | VNode[] | undefined;
}
/**
 * Restores dehydrated server permissions on the client.
 *
 * @link https://permix.letstri.dev/docs/integrations/vue
 */
declare const PermixHydrate: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
  state: {
    type: PropType<DehydratedState<any>>;
    required: true;
  };
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
  [key: string]: any;
}>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
  state: {
    type: PropType<DehydratedState<any>>;
    required: true;
  };
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
declare function createComponents<D extends Definition>(permix: Pick<Permix<D>, 'getRules' | 'check'>): PermixComponents<D>;
//#endregion
//#region src/vue/composables.d.ts
/**
 * Access Permix check and readiness state inside a Vue component.
 *
 * @link https://permix.letstri.dev/docs/integrations/vue
 */
declare function usePermix<T extends Definition>(permix: Pick<Permix<T>, 'getRules' | 'check'>): {
  check: (...args: CheckArgs<T>) => boolean;
  isReady: import("vue").ComputedRef<boolean>;
};
//#endregion
//#region src/vue/context.d.ts
interface PermixContext<T extends Definition> {
  permix: Permix<T>;
  isReady: boolean;
  rules: Rules<T> | null;
}
//#endregion
export { type CheckProps, type PermixComponents, type PermixContext, PermixHydrate, PermixProvider, createComponents, usePermix };