import { FusePermissionGrantResult } from './FusePermissionGrantResult';
/**
 * An interface to standardize handling permissions
 * @experimental
 */
export interface IFusePermissionRequest<TSupportedPermission extends number = number> {
    /**
     * A list of symbols that would represent the permission to request on the native side.
     *
     * The implementation should define an enum, union type, or something that declares
     * what permissions it supports requesting.
     *
     * An implementation should support requesting a grouped set of permissions, which
     * Android may combine into one prompt.
     *
     * iOS will generally use one permission.
     */
    getPermissionSet(): TSupportedPermission[];
    /**
     * Request the permission set
     * Will resolve if all permissions in the set is granted.
     * Rejects otherwise.
     */
    request(): Promise<FusePermissionGrantResult<TSupportedPermission>>;
}
