import { Abilities, AbilityTuple, AnyAbility, Generics, IfString, MongoAbility, SubjectType } from '@casl/ability';
export type CanProps<T extends AnyAbility> = AbilityCanProps<Generics<T>['abilities']> & {
    not?: boolean;
    passThrough?: boolean;
};
export declare const Can: import("vue").DefineComponent<CanProps<MongoAbility<AbilityTuple, import("@casl/ability").MongoQuery>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CanProps<MongoAbility<AbilityTuple, import("@casl/ability").MongoQuery>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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 {};
