import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { Observable, ReplaySubject } from 'rxjs';
import { UserListItem, UserListService } from '../../../../user/services/user-list.service';
import { UserValue } from '../../../../data-fields/user-field/models/user-value';
import { AbstractBaseUserAssignListComponent } from "../base-user-assign-list/abstract-base-user-assign-list.component";
import * as i0 from "@angular/core";
/**
 * Is responsible for displaying, filtering, loading and selecting users.
 */
export declare abstract class AbstractUserAssignListComponent extends AbstractBaseUserAssignListComponent implements OnInit, OnDestroy {
    /**
     * The user that is initially selected, or `undefined` if none is
     */
    initiallySelectedUser: UserValue | undefined;
    /**
     * Emit selected user to parent component.
     */
    userSelected: EventEmitter<UserValue>;
    /**
     * UserValue array stream, that represents users loading from backend.
     */
    users$: Observable<Array<UserListItem>>;
    /**
     * Stream of selected user with his value that we can subscribe to like the observable.
     */
    protected _selectedUser$: ReplaySubject<string>;
    /**
     * Inject and initialize attributes.
     * @param _userListService Service to get paginated loading users from backend.
     */
    constructor(_userListService: UserListService);
    /**
     * On initialize component set value to stream selectedUser with preselected user.
     * Observes search user control stream on value change.
     */
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * ID of the currently selected user
     */
    get selectedUser$(): Observable<string>;
    /**
     * Sets current user to the selected user.
     *
     * Emit selected user to parent component.
     *
     * Marks selected user in users list.
     * @param selectedUser [UserValue]{@link UserValue}
     */
    select(selectedUser: UserListItem): void;
    /**
     * Marks user as selected in users list.
     * @param selectedUser Current select user value.
     */
    protected _markSelectedUser(selectedUser: UserListItem): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractUserAssignListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractUserAssignListComponent, "ncc-abstract-user-assign-list", never, { "initiallySelectedUser": { "alias": "initiallySelectedUser"; "required": false; }; }, { "userSelected": "userSelected"; }, never, never, false, never>;
}
