import { SubjectType, Generics, AnyAbility, Ability, Abilities, IfString, AbilityTuple } from '@casl/ability'; type AbilityCanProps<T extends Abilities, Else = IfString<T, { do: T; } | { I: T; }>> = T extends AbilityTuple ? { do: T[0]; on: T[1]; field?: string; } | { I: T[0]; a: Extract<T[1], SubjectType>; field?: string; } | { I: T[0]; an: Extract<T[1], SubjectType>; field?: string; } | { I: T[0]; this: Exclude<T[1], SubjectType>; field?: string; } : Else; export type CanProps<T extends AnyAbility> = AbilityCanProps<Generics<T>['abilities']> & { not?: boolean; passThrough?: boolean; }; export declare const Can: import("vue").DefineComponent<CanProps<Ability<AbilityTuple, import("@casl/ability").MongoQuery>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{ do: string; on: import("@casl/ability").Subject; field?: string | undefined; } & { not?: boolean | undefined; passThrough?: boolean | undefined; }> | Readonly<{ I: string; a: SubjectType; field?: string | undefined; } & { not?: boolean | undefined; passThrough?: boolean | undefined; }> | Readonly<{ I: string; an: SubjectType; field?: string | undefined; } & { not?: boolean | undefined; passThrough?: boolean | undefined; }> | Readonly<{ I: string; this: { [x: string]: any; [x: number]: any; [x: symbol]: any; }; field?: string | undefined; } & { not?: boolean | undefined; passThrough?: boolean | undefined; }>, {} | {} | {} | {}, {}>; export {};