import type { PartialBy } from "../../../../../frontend/src/metabase/core/types";
import type { EnterpriseSharedState } from "../shared/reducer";
import type { EnterpriseState } from "../shared/types";
import type { DatabaseId, GroupId, Impersonation } from "../../../../../frontend/src/metabase-types/api";
import type { RequestState, RequestsState } from "../../../../../frontend/src/metabase-types/store";
import type { AdvancedPermissionsState } from "./reducer";
export type ImpersonationParams = {
    groupId: GroupId;
    databaseId: DatabaseId;
};
export interface AdvancedPermissionsStoreState extends EnterpriseState {
    requests: RequestsState & {
        plugins: {
            advancedPermissionsPlugin: {
                policies: Record<string, RequestState>;
            };
        };
    };
    plugins: {
        shared: EnterpriseSharedState;
        advancedPermissionsPlugin: AdvancedPermissionsState;
    };
}
export type ImpersonationDraft = PartialBy<Impersonation, "attribute">;
export type ImpersonationModalParams = {
    groupId: string;
    impersonatedDatabaseId?: string;
    databaseId?: string;
};
