import { AdminLocalization } from './admin-localization';
export type AdminPluginOptions = {
    /** Roles Better Auth treats as administrators. @default ["admin"] */
    adminRoles?: string | readonly string[];
    /** User IDs Better Auth treats as administrators regardless of role. */
    adminUserIds?: readonly string[];
    /** Whether users can have more than one role. @default true */
    allowMultipleRoles?: boolean;
    /** Default role selected when an administrator creates a user. @default "user" */
    defaultRole?: string;
    /** Where to navigate after starting an impersonation session. */
    impersonationRedirectTo?: string;
    /**
     * Override the plugin's default localization strings.
     * @remarks `AdminLocalization`
     */
    localization?: Partial<AdminLocalization>;
    /** Number of users loaded per page. Clamped to 1-100. @default 20 */
    pageSize?: number;
    /** Roles offered by user-management forms. @default ["user", "admin"] */
    roles?: readonly string[];
    /** Show session IP addresses. @default false */
    showIpAddress?: boolean;
};
/** Check whether a target requires Better Auth's `user:impersonate-admins` permission. */
export declare function isAdminTarget(user: {
    id: string;
    role?: string | null;
}, adminRoles?: readonly string[], adminUserIds?: readonly string[]): boolean;
export type ImpersonatingSession = {
    session: {
        impersonatedBy: string;
    };
};
/**
 * Check whether a Better Auth session belongs to an impersonated user.
 */
export declare function isImpersonatingSession(session: unknown): session is ImpersonatingSession;
/**
 * Adds UI integrations for Better Auth's admin plugin.
 *
 * Pair this UI plugin with Better Auth's `admin()` server plugin and
 * `adminClient()` client plugin.
 */
export declare const adminPlugin: ((options?: AdminPluginOptions | undefined) => {
    adminRoles: string[];
    adminUserIds: string[];
    allowMultipleRoles: boolean;
    defaultRole: string;
    impersonationRedirectTo: string | undefined;
    localization: {
        accessDenied: string;
        accessDeniedDescription: string;
        active: string;
        accountInformation: string;
        admin: string;
        banned: string;
        banDuration: string;
        banDurationDescription: string;
        banExpires: string;
        banReason: string;
        banUser: string;
        cancel: string;
        close: string;
        copyUserId: string;
        created: string;
        createUser: string;
        deleteUser: string;
        dangerZone: string;
        email: string;
        emailVerified: string;
        endsWith: string;
        filterAllStatuses: string;
        loadUsersError: string;
        loadUsersErrorDescription: string;
        name: string;
        moreActions: string;
        noUsers: string;
        noUsersDescription: string;
        nextPage: string;
        previousPage: string;
        impersonateUser: string;
        overview: string;
        password: string;
        profileAndAccess: string;
        retry: string;
        role: string;
        search: string;
        searchOperator: string;
        searchContains: string;
        startsWith: string;
        searchByEmail: string;
        searchByName: string;
        sessions: string;
        noSessions: string;
        revoke: string;
        revokeAllSessions: string;
        saveRole: string;
        saveChanges: string;
        saveUser: string;
        setPassword: string;
        security: string;
        status: string;
        sort: string;
        sortNewest: string;
        sortOldest: string;
        sortNameAscending: string;
        sortNameDescending: string;
        stopImpersonating: string;
        userDetails: string;
        userId: string;
        unknownView: string;
        unknownViewDescription: string;
        unbanUser: string;
        users: string;
        usersDescription: string;
        usersPaginationRange: string;
    };
    pageSize: number;
    roles: string[];
    showIpAddress: boolean;
} & {
    id: "admin";
}) & {
    id: "admin";
};
