import type { Construct } from 'constructs';
import type { IRoleRef } from '../../aws-iam';
import type { IResource } from '../../core';
import { Resource } from '../../core';
import type { IUserPoolGroupRef, IUserPoolRef, UserPoolGroupReference } from '../../interfaces/generated/aws-cognito-interfaces.generated';
/**
 * Represents a user pool group.
 */
export interface IUserPoolGroup extends IResource, IUserPoolGroupRef {
    /**
     * The user group name
     * @attribute
     */
    readonly groupName: string;
}
/**
 * Options to create a UserPoolGroup
 */
export interface UserPoolGroupOptions {
    /**
     * A string containing the description of the group.
     *
     * @default - no description
     */
    readonly description?: string;
    /**
     * The name of the group. Must be unique.
     *
     * @default - auto generate a name
     */
    readonly groupName?: string;
    /**
     * A non-negative integer value that specifies the precedence of this group relative to the other groups
     * that a user can belong to in the user pool. Zero is the highest precedence value.
     *
     * Groups with lower Precedence values take precedence over groups with higher or null Precedence values.
     * If a user belongs to two or more groups, it is the group with the lowest precedence value
     * whose role ARN is given in the user's tokens for the cognito:roles and cognito:preferred_role claims.
     *
     * Two groups can have the same Precedence value. If this happens, neither group takes precedence over the other.
     * If two groups with the same Precedence have the same role ARN, that role is used in the cognito:preferred_role
     * claim in tokens for users in each group.
     * If the two groups have different role ARNs, the cognito:preferred_role claim isn't set in users' tokens.
     *
     * @default - null
     */
    readonly precedence?: number;
    /**
     * The role for the group.
     *
     * @default - no description
     */
    readonly role?: IRoleRef;
}
/**
 * Props for UserPoolGroup construct
 */
export interface UserPoolGroupProps extends UserPoolGroupOptions {
    /**
     * The user pool to which this group is associated.
     */
    readonly userPool: IUserPoolRef;
}
/**
 * Define a user pool group
 */
export declare class UserPoolGroup extends Resource implements IUserPoolGroup {
    /** Uniquely identifies this class. */
    static readonly PROPERTY_INJECTION_ID: string;
    /**
     * Import a UserPoolGroup given its group name
     */
    static fromGroupName(scope: Construct, id: string, groupName: string): IUserPoolGroup;
    readonly groupName: string;
    private readonly _userPool;
    get userPoolGroupRef(): UserPoolGroupReference;
    constructor(scope: Construct, id: string, props: UserPoolGroupProps);
}
