import { MutationOptions } from '@tanstack/query-core';
import { BetterFetchError } from 'better-auth/client';
import { OrganizationAuthClient } from './organization-auth-client';
export type LeaveOrganizationParams<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = Parameters<TAuthClient["organization"]["leave"]>[0];
export type LeaveOrganizationOptions<TAuthClient extends OrganizationAuthClient = OrganizationAuthClient> = Omit<ReturnType<typeof leaveOrganizationOptions<TAuthClient>>, "mutationKey" | "mutationFn" | "meta">;
/**
 * Mutation options factory for leaving an organization.
 *
 * @param authClient - The Better Auth organization client.
 * @param userId - The current signed-in user's ID. Used for cache invalidation.
 */
export declare function leaveOrganizationOptions<TAuthClient extends OrganizationAuthClient>(authClient: TAuthClient, userId?: string): MutationOptions<Awaited<ReturnType<(params: LeaveOrganizationParams<TAuthClient>) => Promise<NonNullable<Omit<{
    id: string;
    organizationId: string;
    role: "admin" | "member" | "owner";
    createdAt: Date;
    userId: string;
    user: {
        id: string;
        email: string;
        name: string;
        image?: string | undefined;
    };
} & {
    user: {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        emailVerified: boolean;
        name: string;
        image?: string | null | undefined;
    };
}, "user"> & {
    user: {
        id: string;
        name: string;
        email: string;
        image: string | undefined;
    };
}>>>>, BetterFetchError, Parameters<(params: LeaveOrganizationParams<TAuthClient>) => Promise<NonNullable<Omit<{
    id: string;
    organizationId: string;
    role: "admin" | "member" | "owner";
    createdAt: Date;
    userId: string;
    user: {
        id: string;
        email: string;
        name: string;
        image?: string | undefined;
    };
} & {
    user: {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        emailVerified: boolean;
        name: string;
        image?: string | null | undefined;
    };
}, "user"> & {
    user: {
        id: string;
        name: string;
        email: string;
        image: string | undefined;
    };
}>>>[0]>;
