import { AuthConfig, OAuthService } from 'angular-oauth2-oidc'; import { ReplaySubject, BehaviorSubject, Subscription, Observable, Subject, PartialObserver, TeardownLogic, Subscribable } from 'rxjs'; import * as i0 from '@angular/core'; import { OnInit, EventEmitter, TemplateRef, OnDestroy, OnChanges, ElementRef, SimpleChanges, PipeTransform, AfterViewInit, ChangeDetectorRef, ViewContainerRef, ComponentFactoryResolver, ModuleWithProviders } from '@angular/core'; import * as i48 from '@ngx-translate/core'; import { TranslateService, TranslateModule } from '@ngx-translate/core'; import * as i43 from '@angular/common'; import { KeyValue, DatePipe } from '@angular/common'; import * as i45 from '@angular/router'; import { Params, ActivatedRoute, Router, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router'; import * as i46 from '@ng-bootstrap/ng-bootstrap'; import { NgbDateParserFormatter, NgbDate, NgbCalendar, NgbDateStruct, NgbTimeStruct, NgbPopover, NgbPopoverConfig, NgbModal, NgbModalOptions, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import * as i44 from '@angular/forms'; import { ControlValueAccessor, NgForm } from '@angular/forms'; import * as i47 from '@ng-select/ng-select'; import { DropdownPosition, NgSelectComponent } from '@ng-select/ng-select'; import { HttpClient, HttpParams, HttpRequest, HttpProgressEvent, HttpResponse, HttpErrorResponse, HttpParameterCodec, HttpInterceptor, HttpHandler, HttpEvent } from '@angular/common/http'; interface AppConfig { notAuthorizedRoute: string[]; supportEmailAddress?: string; } interface HttpConfig { encoderUriPatterns: string[]; authUriPatterns: string[]; includeLanguageParam?: boolean; } interface ServiceConfig { appCode: number[]; apiEndpoint: string; } declare class WorldskillsAngularLibService { defaultSupportEmailAddress: string; appConfigSubject: ReplaySubject; httpConfigSubject: ReplaySubject; serviceConfigSubject: ReplaySubject; authConfigSubject: ReplaySubject; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class WorldskillsAngularLibComponent implements OnInit { constructor(); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare enum AlertType { error = "alert-danger", info = "alert-info", success = "alert-success", warning = "alert-warning" } interface Alert { id: string; type: AlertType; title: string; message: string; closable: boolean; wsAlertComponentId: string; } declare class AlertService { alerts: Alert[]; constructor(); remove(id: string): void; setAlert(id: string, type: AlertType, title?: string, message?: string, closable?: boolean, wsAlertComponentId?: string): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class AlertComponent implements OnInit { alertService: AlertService; alert: Alert; closeStyle: string; constructor(alertService: AlertService); ngOnInit(): void; ngOnChanges(): void; hasMessage(): boolean; hasTitle(): boolean; canClose(): boolean; dismiss(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class AlertsComponent implements OnInit { alertService: AlertService; wsAlertComponentId: string; closeStyle: string; constructor(alertService: AlertService); ngOnInit(): void; get hasAlerts(): boolean; getMyAlertList(): Alert[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface Breadcrumb { key: string; label: string; params?: Params; url: string; } declare class BreadcrumbsService { protected breadcrumbs: Breadcrumb[]; breadcrumbsSubject: BehaviorSubject; homeItemRoute: string; isAtHome: boolean; targetOutlet: string; replacements: KeyValue[]; showHomeItem: boolean; linkHomeItem: boolean; constructor(); build(route: ActivatedRoute, url?: string, first?: boolean): void; createOrUpdateReplacement(key: string, value: string): number; replaceLabel(key: string, value: string): void; remove(key: string): void; add(breadcrumb: Breadcrumb): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class BreadcrumbsComponent implements OnInit { service: BreadcrumbsService; private router; private route; showHomeItem: boolean; homeItemRoute: string; homeItemText: string; replacementSubscription: Subscription; rebuildSubscription: Subscription; breadcrumbs: Breadcrumb[]; isAtHome: boolean; constructor(service: BreadcrumbsService, router: Router, route: ActivatedRoute); ngOnInit(): void; ngOnChanges(): void; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface DateRange { start: Date; end: Date; } declare class DateRangeComponent implements ControlValueAccessor { private calendar; formatter: NgbDateParserFormatter; disabled: boolean; get opacity(): number; hoveredDate: NgbDate | null; fromDate: NgbDate | null; toDate: NgbDate | null; value: DateRange; change: EventEmitter; constructor(calendar: NgbCalendar, formatter: NgbDateParserFormatter); onDateSelection(date: NgbDate): void; isHovered(date: NgbDate): boolean; isInside(date: NgbDate): boolean; isRange(date: NgbDate): boolean; validateInput(currentValue: NgbDate | null, input: string): NgbDate | null; onChange: (range: DateRange) => void; onTouched: () => void; writeValue(obj: DateRange): void; toNgbDate(date: Date): NgbDate; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState?(isDisabled: boolean): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface NgbDatetimeStruct extends NgbDateStruct, NgbTimeStruct { } declare class Datetime implements NgbDatetimeStruct { year: number; month: number; day: number; hour: number; minute: number; second: number; timeZoneOffset: number; constructor(init?: Partial); static asToday(): Datetime; static fromLocalString(dateString: string): Datetime; private isInteger; toString(): string; } declare class DatetimePickerComponent implements ControlValueAccessor { private config; disabled: boolean; readonly: boolean; get opacity(): number; inputDatetimeFormat: string; hourStep: number; minuteStep: number; secondStep: number; seconds: boolean; maxDate: NgbDateStruct; minDate: NgbDateStruct; showTimePickerToggle: boolean; value: Datetime; model: NgbDate | null; popover: NgbPopover; change: EventEmitter; onChange: (value: Datetime) => void; onTouched: () => void; constructor(config: NgbPopoverConfig); writeValue(obj: Datetime): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState?(isDisabled: boolean): void; onInputChange($event: any): void; toggleDateTimeState(): void; onDateChange(date: NgbDate): void; onTimeChange(event: NgbTimeStruct): void; onAccept(): void; inputBlur($event: any): void; toNgbDate(date: Date): NgbDate; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface EntityFetchParams { limit?: number; offset?: number; depth?: number; member_of?: number; name?: string; role?: string; roleApp?: number; sort?: 'name' | 'name_desc'; } interface I18nText { lang_code: string; text: string; translations?: Map; } declare class EntityTreeView { id: number; name: I18nText; parent_id: number; children: Array; constructor(obj?: any); } declare class EntityTreeListView { total_count: number; ws_entity_list: Array; constructor(obj?: any); } declare class CacheStorageService { constructor(); get(key: string, defaultValue?: T, engine?: Storage): T; set(key: string, value: any, engine?: Storage): void; setExpire(key: string, value: any, expire: Date): void; remove(key: string, engine?: Storage): void; fetchObservable(fetchFn: () => Observable, key: string, expire: Date, defaultValue?: T): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class EntityTreeService { private cache; protected wsi: WorldskillsAngularLibService; protected http: HttpClient; constructor(cache: CacheStorageService, wsi: WorldskillsAngularLibService, http: HttpClient); private subjects; endpoint: string; subject: BehaviorSubject; static equals(a: EntityFetchParams, b: EntityFetchParams): boolean; clearCache(params?: EntityFetchParams): void; getCachedSubject(params?: EntityFetchParams, fetchOnCreate?: boolean): BehaviorSubject; list(params?: EntityFetchParams, legacyCaching?: boolean): Observable; listCached(params?: EntityFetchParams, cacheTime?: number): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface EntityTreeSelectLabels { clearAllText?: string; loadingText?: string; notFoundText?: string; typeToSearchText?: string; placeholder?: string; } interface EntityTreeSelectControls { wrapper?: TemplateRef<{ $implicit: TemplateRef; }>; expand?: TemplateRef<{ enabled: boolean; click: () => void; }>; expandAll?: TemplateRef<{ click: () => void; }>; collapse?: TemplateRef<{ enabled: boolean; click: () => void; }>; collapseAll?: TemplateRef<{ click: () => void; }>; separator?: TemplateRef; showing?: TemplateRef<{ showing: number; total: number; }>; } type TreeEntity = Omit & { parent: TreeEntity; children: TreeEntity[]; fullPathName: string; paths: Array; allPaths: Array; selectable: boolean; filtered: boolean; type: 'treeEntity'; }; declare class EntityTreeSelectComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor { private entityTreeService; /** labels for ng-select */ labels: EntityTreeSelectLabels; /** control templates for the toolbar buttons */ controls: EntityTreeSelectControls; /** query parameters to scope the available entities */ query: Omit; /** entities input array */ entities: Array; /** force disable the following entities */ disableEntities: Array; /** always make children selectable of passed entities */ selectableChildren: boolean; /** show unselectable parents */ showUnselectableParents: boolean; /** whether or not to show the full path for selected entities */ showFullPath: boolean; /** whether or not to show the header controls */ showControls: boolean; /** whether to use api caching or not, caching is done per query request object, see EntityTreeService for more details */ cache: boolean; /** implement the cache style for the entity tree. legacy = no changes; any other value uses the modern strategy */ cacheStyle: string; /** time before cachce needs to be refreshed */ cacheTimerMS: number; /** if the tree is expanded by default */ defaultExpand: boolean; private expandedSearch; private flattenedEntities; private flattenedTreeEntities; private lastTerm; private lastSearch; private refreshing; private update; private htmlId; private fetchedTreeEntities; private cachedWriteValueSubject; private treeEntitiesSubject; private writeValueSubscription; hasFocus: boolean; loading: boolean; treeEntities: Array; expanded: Array; /** ng-select input */ appendTo: any; /** ng-select input */ closeOnSelect: boolean; /** ng-select input */ clearable: boolean; /** ng-select input */ clearOnBackspace: boolean; /** ng-select input */ dropdownPosition: DropdownPosition; /** ng-select input */ markFirst: boolean; /** ng-select input */ isOpen: boolean; /** ng-select input */ maxSelectedItems: number; /** ng-select input */ hideSelected: boolean; /** ng-select input */ multiple: boolean; /** ng-select input */ searchable: boolean; /** ng-select input */ readonly: boolean; /** ng-select input */ searchWhileComposing: boolean; /** ng-select input */ selectOnTab: boolean; /** ng-select input */ openOnEnter: boolean; /** ng-select input */ virtualScroll: boolean; /** ng-select input */ inputAttrs: { [key: string]: string; }; /** ng-select input */ tabIndex: number; /** ng-select output */ blur: EventEmitter; /** ng-select output */ focus: EventEmitter; /** ng-select output */ change: EventEmitter; /** ng-select output */ open: EventEmitter; /** ng-select output */ close: EventEmitter; /** ng-select output */ search: EventEmitter<{ term: string; items: TreeEntity[]; }>; /** ng-select output */ clear: EventEmitter; /** ng-select output */ add: EventEmitter; /** ng-select output */ remove: EventEmitter; /** ng-select output */ scroll: EventEmitter<{ start: number; end: number; }>; /** ng-select output */ scrollToEnd: EventEmitter; ngSelectComponent: NgSelectComponent; ngSelectComponentRef: ElementRef; wrapperControl: TemplateRef<{ $implicit: TemplateRef; }>; expandControl: TemplateRef<{ enabled: boolean; click: () => void; }>; expandAllControl: TemplateRef<{ click: () => void; }>; collapseControl: TemplateRef<{ enabled: boolean; click: () => void; }>; collapseAllControl: TemplateRef<{ click: () => void; }>; separatorControl: TemplateRef; showingControl: TemplateRef<{ showing: number; total: number; }>; /** compare function for ng-select */ compareWith: (a: any, b: any) => boolean; /** the id callback function for the Input entities */ entityIdCallback: (entity: any) => number; constructor(entityTreeService: EntityTreeService); get currentMarkedEntity(): TreeEntity; get filtered(): number; get total(): number; get queryParams(): EntityFetchParams; ngOnChanges(changes: SimpleChanges): void; ngOnInit(): void; private createTreeEntities; private deepCopyEntity; ngOnDestroy(): void; isDomIdentifier(name: string): boolean; getDomIdentifier(name: string): string; stripDomIdentifier(name: string): string; private flatten; private setParentsForEntities; private setPathNamesAndTypes; private setSelectable; private setSelectableForChildren; private clearSafeChildren; private clearUnselectableTrees; private clearUnselectableTree; private flattenUnselectableParents; isExpandable(entity: TreeEntity): boolean; expandFn(entity: TreeEntity): any; expand(entity: TreeEntity): void; expandAllFn(): any; expandAll(entities: Array, update?: boolean): void; expandArray(entities: Array): void; expandTree(entity: TreeEntity): void; expandTrees(entities: Array): void; collapseFn(entity: TreeEntity): any; collapse(entity: TreeEntity): void; collapseAllFn(): any; collapseAll(entities: Array, update?: boolean): void; toggleExpanded(entity: TreeEntity): void; toggleExpandedById(id: number): void; isTreeExpanded(entity: TreeEntity): boolean; isExpanded(entity: TreeEntity): boolean; isCollapsed(entity: TreeEntity): boolean; isVisible(entity: TreeEntity): boolean; trackByFn(entity: TreeEntity): any; onClear(event: any): void; onOpen(event: any): void; onSearch(event: { term: string; items: TreeEntity[]; }): void; searchFn(term: string, entity: TreeEntity): boolean; private entityContainsSearchTerm; private childrenContainSearchTerm; onChange(entity: TreeEntity | Array): void; onClick(event: Event): void; onKeyDown(event: KeyboardEvent): void; private getFiltered; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(isDisabled: boolean): void; writeValue(obj: any): void; toId(obj: any): any; toTreeEntity(obj: any): any; toEntity(obj: any): any; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface Language { code: string; name: string; alt: string[]; } interface WsEntityModel { id: number; name: I18nText; } interface RoleApplicationModel { id: number; name: string; application_code: number; manages_own_roles: boolean; } interface Role { id: number; role_application_id: number; name: string; description: string; apply_per_entity: boolean; ws_entity: WsEntityModel; role_application: RoleApplicationModel; ws_entity_ids: number[]; } interface User { id: number; person_id: number; legacy_id: number; first_name: string; last_name: string; puppeteer: any; username: string; email_addresses: string[]; roles: Role[]; user_profiles: any; active: boolean; password: any; pin: any; has_pin: boolean; preferred_lang: string; } declare class WsiTranslateService { translator: TranslateService; availableLanguages: { ar_AE: {}; en: { translations: string; edit_all_translations: string; add_translation: string; remove: string; auth: { login: string; logout: string; }; dialogue: { close: string; }; footer: { copyright: { contact: string; privacy: string; terms: string; wsi: string; }; links: { forums: string; glossary: string; horizon: string; 'infrastructure.lists': string; 'my.worldskills': string; registrations: string; 'skill.management': string; wiw: string; }; translation: { language: string; missing: string; }; }; polls: { vote_note_allowed: string; buttons: { abstain: string; delete: string; edit: string; 'export.results': string; extend: string; 'clear.vote': string; reset: string; 'view.choices': string; 'view.results': string; vote: string; open: string; close: string; }; 'created.by': string; messages: { abstained: string; anon: string; choices: string; voted: string; }; points: string; status: string; selection: string; to: string; votes: string; }; dates: { just_now: string; minute_ago: string; minutes_ago: string; hour_ago: string; hours_ago: string; yesterday: string; days_ago: string; week_ago: string; weeks_ago: string; soon: string; in_a_minute: string; in_n_minutes: string; in_an_hour: string; in_n_hours: string; tomorrow: string; in_n_days: string; in_a_week: string; in_n_weeks: string; }; modals: { cancel: string; no: string; ok: string; yes: string; }; }; de: { auth: { login: string; logout: string; }; dialogue: { close: string; }; footer: { copyright: { contact: string; privacy: string; terms: string; wsi: string; }; links: { forums: string; glossary: string; 'infrastructure.lists': string; 'my.worldskills': string; registrations: string; }; translation: { language: string; missing: string; }; }; polls: { buttons: { abstain: string; edit: string; delete: string; reset: string; }; }; }; fr: {}; fi: { auth: { login: string; logout: string; }; dialogue: { close: string; }; footer: { copyright: { contact: string; terms: string; wsi: string; privacy: string; }; links: { forums: string; glossary: string; 'infrastructure.lists': string; 'my.worldskills': string; registrations: string; 'skill.management': string; wiw: string; }; translation: { language: string; missing: string; }; }; polls: { buttons: { abstain: string; delete: string; edit: string; 'export.results': string; extend: string; 'clear.vote': string; reset: string; 'view.choices': string; 'view.results': string; vote: string; }; 'created.by': string; messages: { anon: string; choices: string; voted: string; abstained: string; }; points: string; selection: string; status: string; to: string; votes: string; }; dates: { minutes_ago: string; minute_ago: string; hour_ago: string; hours_ago: string; yesterday: string; week_ago: string; weeks_ago: string; soon: string; in_a_minute: string; in_n_minutes: string; in_an_hour: string; tomorrow: string; in_n_days: string; in_a_week: string; in_n_weeks: string; just_now: string; days_ago: string; in_n_hours: string; }; }; pt_BR: {}; ru_RU: {}; tt_RU: {}; zh_CN: {}; }; onLangChanged: Subject; constructor(translator: TranslateService); init(code: string): any; mergeMissingKeys(obj: any, context: any): any; setUserLanguage(user: User): void; getCurrentOrDefaultCode(): string; getSelectedLanguage(): Language; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class FooterComponent implements OnInit { private wsi; private translator; date: any; languages: Language[]; selectedLanguage: Language; isLoggedIn: boolean; currentUser: User; col1Template: TemplateRef; col2Template: TemplateRef; col3Template: TemplateRef; col4Template: TemplateRef; col5Template: TemplateRef; col6Template: TemplateRef; logoutClick: EventEmitter; loginClick: EventEmitter; col1DefaultTemplate: TemplateRef; col6DefaultTemplate: TemplateRef; colDefaultTemplate: TemplateRef; supportEmail?: string; constructor(wsi: WorldskillsAngularLibService, translator: WsiTranslateService); ngOnInit(): void; login(): void; logout(): void; changeLanguage(model: Language): void; isLanguageSelected(model: Language): boolean; languagePrompt(): void; getLanguages(): Language[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface MenuItem { label: string; params?: Params; url: string; hidden: boolean; requireLogin: boolean; requiredRoles: string[]; subMenuItems?: MenuItem[]; } declare class HeaderComponent implements OnInit { private router; private route; appName: string; isLoggedIn: boolean; showLoginAndLogoutButtons: boolean; menuItems: Array; dropDownMenuItems: Array; currentUser: User; linkTitle: boolean; appNameTemplate: TemplateRef; menuTemplate: TemplateRef; subMenuTemplate: TemplateRef; logoutClick: EventEmitter; loginClick: EventEmitter; constructor(router: Router, route: ActivatedRoute); ngOnInit(): void; ngOnChanges(): void; userRoles(): string[]; isRouteActive(item: MenuItem): boolean; getActiveParentMenu(): MenuItem; hasSubMenuItems(item: MenuItem): boolean; getSubMenuItems(item: MenuItem): MenuItem[]; login(): void; logout(): void; getInitials(): string; showMenu(): boolean; showLoginButton(): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class LogoComponent implements OnInit { constructor(); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class MenuAccessPipe implements PipeTransform { transform(items: MenuItem[], isLoggedIn: boolean, roles: string[]): MenuItem[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } interface CreatedBy { id: number; firstName: string; lastName: string; } interface EntityPathItem { id: number; text: string; hasChildren: boolean; } interface EntityPath { pieces: EntityPathItem[]; } interface Option { id: number; text: I18nText; deleted: boolean; } interface Person { id: number; firstName: string; lastName: string; } interface VoteEntry { rank: number; optionId: number; } interface Vote { hasVoted: boolean; votes: VoteEntry[]; anonymous: boolean; abstained: boolean; } interface Poll { id: number; entity: WsEntityModel; entityPath: EntityPath; deleted: boolean; anonymousVoting: boolean; anonymousResults: boolean; showingResults: boolean; allowingReVote: boolean; allowingAbstain: boolean; whitelist: boolean; title: I18nText; question: I18nText; resultText?: I18nText; type: string; numberOfSelections: number; created: Date; start: Date; expiry: Date; createdBy: CreatedBy; options: Option[]; userVote?: Vote; listId?: number; allowedVoters?: Person[]; dependsOn?: Poll; } interface Result { id: number; count: number; points: number; option: Option; } interface Abstain { id: number; pollId: number; timestamp: Date; } interface PersonPosition { id: number; start: Date; end: Date; name: string; entityId: number; posId: number; memberCode: string; } interface Track { personId: number; firstName: string; lastName: string; option: Option; weight: number; timestamp: Date; abstain?: Abstain; imagePath?: string; relativePosition: PersonPosition; positions: PersonPosition[]; voteIndex: number; } interface OptionResultView extends Option { points: number; votes: number; } declare class PollResultComponent implements OnInit { max: number; poll: Poll; results: Result[]; tracks: Track[]; canSeeWhoVoted: any; optionResultItems: OptionResultView[]; constructor(); ngOnInit(): void; ngOnChanges(): void; init(): void; getPeople(option: Option): Track[]; getVoter(track: Track): string; getVoterHover(track: Track): string; countVotes(option: Option): number; countPoints(option: Option): number; showVoteIndex(): boolean; getVoteIndex(track: Track): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class PuppeteerBannerComponent implements OnInit { currentUser: User; constructor(); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * @deprecated The method should not be used. use tthe relative-date component instead */ interface RelativeDateProcessor { handlePastDate(date: Date): string; handleFutureDate(date: Date): string; } declare class RelativeDatePipe implements PipeTransform { /** * @deprecated The method should not be used. use tthe relative-date component instead */ transform(value: Date, format?: string, locale?: string, processor?: RelativeDateProcessor): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } type SelectAsyncSearchObserverResolver = PartialObserver | ((value: string) => void) | ((value: string) => Observable); interface SelectAsyncSearchSettingsAdvanced { minCharacters?: number; debounceTime?: number; message?: string | TemplateRef; onValid?: (valid: boolean) => void; observer: SelectAsyncSearchObserverResolver; } type SelectAsyncSearchSettings = SelectAsyncSearchSettingsAdvanced | SelectAsyncSearchObserverResolver; interface SelectChangeEvent { item: T; original: { label: string; value: U; [key: string]: any; }; value: U; } type EntryReader = string | Array | ((obj: T) => U); declare class SelectDirective implements OnInit, OnChanges, OnDestroy, AfterViewInit { private ngSelectComponent; private changeDetectorRef; private viewContainerRef; private componentFactoryResolver; entryReader: [ EntryReader, EntryReader, EntryReader | undefined ] | [ EntryReader, EntryReader ] | { labelReader: EntryReader; valueReader: EntryReader; groupReader?: EntryReader; }; items: any; wsChange: EventEmitter; labelReader: EntryReader; valueReader: EntryReader; groupReader: EntryReader; asyncSearch: SelectAsyncSearchSettings; private originalItems; private asyncHandler; constructor(ngSelectComponent: NgSelectComponent, changeDetectorRef: ChangeDetectorRef, viewContainerRef: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver); ngAfterViewInit(): void; ngOnChanges(changes: SimpleChanges): void; ngOnInit(): void; ngOnDestroy(): void; private updateItems; private readObjectLabel; private readObjectValue; private readObjectGroup; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class SelectAsyncHeaderComponent { content: string | TemplateRef; templateRef: any; get isString(): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class SortPipe implements PipeTransform { transform(items: any, direction?: any, property?: any): any[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } declare class StagingBannerComponent implements OnInit { message: string; constructor(); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface OptionHandler { onOptionSelect(pollType: string, currentSelection: any[], newSelectedValue: any, selectionIndex: number): any[]; } declare class StandardPollComponent implements OnInit { poll: Poll; voted: Vote; initialSelection: VoteEntry[]; optionSelected: EventEmitter; optionHandler: OptionHandler; selection: VoteEntry; constructor(); ngOnInit(): void; ngOnChanges(): void; init(): void; loadDefaultSelection(): void; isSelected(option: Option): boolean; onOptionSelect(option: Option): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class WsiToastService { constructor(); toasts: any[]; show(textOrTpl: string | TemplateRef, options?: any): void; remove(toast: any): void; showStandard(msg: string): void; showSuccess(title: string, msg: string): void; showError(title: string, msg: string): void; showCustomToast(customTpl: any): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class VoteControlComponent implements OnInit { private toasts; personId: any; useToastNotifications: boolean; showEditButton: boolean; showExtendButton: boolean; showResetButton: boolean; showDeleteButton: boolean; showExportButton: boolean; showOpenButton: boolean; showCloseButton: boolean; showCustomView: boolean; poll: Poll; results: Result[]; voted: Vote; votedDependsOn: Vote; tracks: Track[]; confirmBeforeVote: boolean; confirmBeforeAbstain: boolean; optionHandler: OptionHandler; isOwner: boolean; beforeOptionsTemplate: TemplateRef; optionsDefaultTemplate: TemplateRef; optionsTemplate: TemplateRef; afterOptionsTemplate: TemplateRef; beforeResultTemplate: TemplateRef; resultDefaultTemplate: TemplateRef; resultTemplate: TemplateRef; afterResultTemplate: TemplateRef; controlBarLeftTemplate: TemplateRef; controlBarRightTemplate: TemplateRef; titleTemplate: TemplateRef; footerTemplate: TemplateRef; questionTemplate: TemplateRef; customViewTemplate: TemplateRef; edit: EventEmitter; extend: EventEmitter; reset: EventEmitter; delete: EventEmitter; viewChange: EventEmitter; voteSelected: EventEmitter; abstainSelected: EventEmitter; voteRemoved: EventEmitter; exportClicked: EventEmitter; openClicked: EventEmitter; closeClicked: EventEmitter; view: string; subscription: Subscription; state: string; selection: VoteEntry[]; dateFormat: string; constructor(toasts: WsiToastService); ngOnInit(): void; ngOnChanges(): void; init(): void; calculateState(): void; notifyInfo(message: string): void; notifySuccess(title: string, message: string): void; notifyError(title: string, message: string): void; selected(model: VoteEntry[]): void; vote(): void; abstain(): void; unvote(): void; changeView(view: string): void; viewResultsState(): boolean; hasVotesSelected(): boolean; editClick(poll: Poll): void; extendClick(poll: Poll): void; resetClick(poll: Poll): void; deleteClick(poll: Poll): void; openClick(poll: Poll): void; closeClick(poll: Poll): void; getVoteText(entry: VoteEntry): string; isWhiteListed(): boolean; showVoteButton(): boolean; showAbstainButton(): boolean; showClearVoteButton(): boolean; showManageButton(): boolean; showWhoVoted(): boolean; export(): void; useDateRange(): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class WordmarkComponent implements OnInit { constructor(); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class WeightedPollComponent implements OnInit { poll: Poll; voted: Vote; initialSelection: VoteEntry[]; optionHandler: OptionHandler; optionSelected: EventEmitter; numSelections: number[]; models: string[]; constructor(); ngOnInit(): void; init(): void; change(event: any, index: any): void; hasMaxSelections(): boolean; numberToWord(num: number): string; calcPointsForItem(num: number): number; isSelected(optionId: number): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class MultiselectPollComponent implements OnInit { poll: Poll; voted: Vote; initialSelection: VoteEntry[]; optionSelected: EventEmitter; optionHandler: OptionHandler; numSelections: number[]; models: string[]; constructor(); ngOnInit(): void; init(): void; change(event: any, index: any): void; hasMaxSelections(): boolean; numberToWord(num: number): string; isSelected(optionId: number): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface UserList { total_count: number; users: User[]; } interface GetUsersParams { un?: string; fn?: string; ln?: string; sort?: string; role?: string; app_code?: number; role_id?: number; offset: number; limit: number; ws_entity?: number; ws_entity_precise?: boolean; } declare class AuthService { protected wsi: WorldskillsAngularLibService; protected http: HttpClient; protected appCode: number[]; protected endpoint: string; constructor(wsi: WorldskillsAngularLibService, http: HttpClient); getLoggedInUser(showCollapsedChildRoles?: boolean): Observable; logout(): Observable; ping(): Observable; listUsers(filter: GetUsersParams): Observable; getUser(id: number): Observable; getUserByPerson(id: number): Observable; addRole(userId: number, roleId: number): Observable; addRoleWithEntity(userId: number, roleId: number, entityId: number): Observable; deleteRole(userId: number, roleId: number): Observable; deleteRoleWithEntity(userId: number, roleId: number, entityId: number): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class NgAuthService { private wsi; private oAuthService; authService: AuthService; currentUser: BehaviorSubject; constructor(wsi: WorldskillsAngularLibService, oAuthService: OAuthService, authService: AuthService); keepAlive(): Observable; isLoggedIn(): boolean; getLoggedInUser(showChildRoles?: boolean): Observable; login(): void; logout(): Observable; clearSession(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class UserRoleDirective implements OnInit { private templateRef; private viewContainerRef; private ngAuthService; constructor(templateRef: TemplateRef, viewContainerRef: ViewContainerRef, ngAuthService: NgAuthService); wsUserRole: string | Array; wsUserRoleUser: User | true; wsUserRoleAll: boolean; wsUserRoleEntity: number | { id: number; }; wsUserRoleAppId: number; wsUserRoleNegate: boolean; ngOnInit(): void; private renderIfValid; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class AuthHeaderComponent implements OnInit { private router; private ngAuthService; appName: string; menuItems: Array; onLogin: EventEmitter; onLogout: EventEmitter; appNameTemplate: TemplateRef; menuTemplate: TemplateRef; autoLoginOnLogout: boolean; currentUser: User; constructor(router: Router, ngAuthService: NgAuthService); ngOnInit(): void; isRouteActive(route: any): boolean; login(): void; logout(): void; get userRoles(): string[]; get initials(): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class AuthFooterComponent implements OnInit { private ngAuthService; private wsi; private translator; date: any; languages: Language[]; selectedLanguage: Language; col1Template: TemplateRef; col2Template: TemplateRef; col3Template: TemplateRef; col4Template: TemplateRef; col5Template: TemplateRef; col6Template: TemplateRef; onLogin: EventEmitter; onLogout: EventEmitter; loginLabel: string; logoutLabel: string; languageChange: EventEmitter; autoLoginOnLogout: boolean; currentUser: User; col1DefaultTemplate: TemplateRef; col6DefaultTemplate: TemplateRef; colDefaultTemplate: TemplateRef; supportEmail?: string; constructor(ngAuthService: NgAuthService, wsi: WorldskillsAngularLibService, translator: WsiTranslateService); ngOnInit(): void; login(): void; logout(): void; changeLanguage(model: Language): void; isLanguageSelected(model: Language): boolean; languagePrompt(): void; getLanguages(): Language[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface ResourceThumbnail { resource_id: number; filename: string; thumbnailLink?: string; description?: string; fileSize?: number | string; downloadLink?: string; } declare class ResourceThumbnailComponent implements OnInit { showDetailInfo: boolean; constructor(); private _resourceThumbnail; get resourceThumbnail(): ResourceThumbnail; set resourceThumbnail(view: ResourceThumbnail); ngOnInit(): void; isNumber(value: any): boolean; showDownload(): boolean; getFileTypeIcon(): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class FileSizePipe implements PipeTransform { transform(size: number, ...args: unknown[]): unknown; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } declare class UploadService { private http; constructor(http: HttpClient); prepareUpload(url: string, data: FormData, params: HttpParams, method?: string): HttpRequest; listen(request: HttpRequest, onProgress: (progress: HttpProgressEvent) => void, onComplete: (response: HttpResponse) => void, onError?: (error: HttpErrorResponse) => void): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface Link { rel: string; href: string; content_type?: string; description?: string; } interface StorageType { code: string; id: number; name: string; } interface Pair { name: string; value: string; } interface Translation { contact: any; id: number; date: string; filename: string; links: Link[]; modified_date: string; lang_code: string; storage_type: StorageType; storage_data: Pair[]; } interface Version { id: number; name: string; date: string; modified_date: string; translations: Translation[]; tags: string[]; } interface ResourceMetadataInfo { id: number; name: I18nText; description: I18nText; multiline: boolean; } interface ResourceTypeMetadata { metadata: ResourceMetadataInfo; required: boolean; } interface ResourceType { id: number; description: I18nText; name: string; metadata: ResourceTypeMetadata[]; } interface ResourceMetadata { metadata: ResourceMetadataInfo; value: string; } interface Resource { id: number; name: I18nText; metadata: ResourceMetadata[]; links: Link[]; ws_entity: WsEntityModel; resource_types: ResourceType[]; versions: Version[]; tags: string[]; } interface ResourceSearch { tags?: string[]; name?: string; ws_entity?: number[]; type?: number[]; sort?: string; date?: string; meta_text?: string; meta_type?: number[]; offset: number; limit: number; } interface ResourceContainer { resources: Resource[]; total_count: number; } interface TranslationCreate { version: number; lang_code: string; storage_type: number; storage_data: Pair[]; } interface VersionCreate { name: string; date?: string; translation?: TranslationCreate; tags?: string[]; } interface ResourceMetadataUpdate { metadata: number; value: string; } declare class ResourceUpload { name: I18nText; ws_entity: number; types: number[]; version: VersionCreate; metadata: ResourceMetadataUpdate[]; tags: string[]; constructor(obj?: Partial); static fromResource(resource: Resource): ResourceUpload; } /** * Example usage: * * fetch(eventId: number, rOpt?: RequestOptions): Observable; * fetch(eventId: number, params: FetchParams, rOpt?: RequestOptions): Observable; * fetch(eventId: number, mOpt: MulticastOptions, rOpt?: RequestOptions): Observable; * fetch(eventId: number, params: FetchParams, mOpt: MulticastOptions, rOpt?: RequestOptions): Observable; * fetch(eventId: number, p1: P1, p2?: P2, p3?: P3): Observable { * const {fetchParams, multicastOptions, requestOptions} = this.resolveArgs(p1, p2, p3, FULL); * const params: HttpParams = httpParamsFromFetchParams(fetchParams); * const observable = this.http.get("http://example.com", {params}).pipe(share()); * return this.request(observable, multicastOptions); * } */ interface MulticastOptions { subject?: boolean; loader?: boolean; subscription?: boolean; onError?: (error: any) => void; } interface FetchParams { limit?: number; offset?: number; sort?: string; l?: string; } interface RequestOptions { url?: string; } declare function isMulticastOptions(object: any): object is MulticastOptions; declare function isFetchParams(object: any): object is FetchParams; declare function isRequestOptions(object: any): object is RequestOptions; type WsServiceRequestP1 = FetchParams | MulticastOptions | RequestOptions; type WsServiceRequestP2 = MulticastOptions | RequestOptions; type WsServiceRequestP3 = RequestOptions; declare const FULL: MulticastOptions; declare const LOADER_ONLY: MulticastOptions; declare const NO_SUBJECT: MulticastOptions; declare abstract class WsService { private loaders; private subscription; subject: ReplaySubject; loading: ReplaySubject; protected constructor(); protected resolveArgs(p1: WsServiceRequestP1, p2: WsServiceRequestP2, p3: WsServiceRequestP3, defaultMulticastOptions: MulticastOptions, defaultFetchParams?: U): { fetchParams: U; multicastOptions: MulticastOptions; requestOptions: RequestOptions; }; private incrementLoader; private decrementLoader; protected multicast(observable: Observable, options?: MulticastOptions): void; protected request(observable: Observable, options?: MulticastOptions): Observable; protected requestMany(observables: Array>, options?: MulticastOptions): Observable>; } declare class ResourceService extends WsService { private wsi; private http; uploader: UploadService; private url; constructor(wsi: WorldskillsAngularLibService, http: HttpClient, uploader: UploadService); search(filter: ResourceSearch): Observable; get(id: number): Observable; delete(id: number): Observable; update(id: number, model: ResourceUpload): Observable; upload(data: ResourceUpload, file: any, method?: string, id?: number): HttpRequest; listTypes(): Observable; getType(id: number): Observable; listMetadata(): Observable; getMetadata(id: number): Observable; createMetadata(model: ResourceMetadataInfo): Observable; updateMetadata(id: number, model: ResourceMetadataInfo): Observable; deleteMetadata(id: number): Observable; downloadResources(resourceIds: number[]): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare abstract class WsComponent implements OnDestroy { protected subscriptions: Subscription; constructor(); ngOnDestroy(): void; protected subscribe(...teardowns: Array): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class ResourceThumbnailContainerComponent extends WsComponent implements OnInit { private resourceService; private datePipe; private alertService; title: string; resourceThumbnailList: ResourceThumbnail[]; isZippingFiles: boolean; constructor(resourceService: ResourceService, datePipe: DatePipe, alertService: AlertService); get getDownloadAllBtnText(): string; ngOnInit(): void; showDownloadAll(): boolean; downloadAllResourcesAsZipFile(): void; private createDownloadLink; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class I18nTextComponent implements OnInit, ControlValueAccessor { private modalService; languages: Language[]; inputId: string; name: string; placeholder: string; required: boolean; model: I18nText; private onChange; private onTouched; constructor(modalService: NgbModal); ngOnInit(): void; switchTranslation(translation: any): void; editAllTranslations(content: any): void; getLanguages(): Language[]; changeTranslation(lang_code: any, text: any): void; addTranslation(lang_code: any): void; deleteTranslation(lang_code: any): void; blurTranslation(): void; numTranslations(): number; writeValue(value: any): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class I18nTextboxComponent implements OnInit { valueChanged: EventEmitter; allowedLanguages: Language[]; defaultLanguage: Language; currentCode: string; text: string; show: boolean; value: I18nText[]; disaableLangChange: boolean; constructor(); ngOnInit(): void; ngOnChanges(): void; getValues(): I18nText[]; textChanged(text: string): void; selectLang(lang: I18nText): void; loadText(): void; getLang(code: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class I18nTextareaComponent implements OnInit { valueChanged: EventEmitter; allowedLanguages: Language[]; defaultLanguage: Language; currentCode: string; text: string; show: boolean; value: I18nText[]; disaableLangChange: boolean; constructor(); ngOnInit(): void; ngOnChanges(): void; getValues(): I18nText[]; textChanged(text: string): void; selectLang(lang: I18nText): void; loadText(): void; getLang(code: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class RelativeDateComponent implements OnInit { date: Date; format: string; locale: string; tresholdInDays: number; output: string; isPastDate: boolean; isRelative: boolean; diff: number; daydiff: number; calculateDelta: (now: any, date: any) => number; constructor(); ngOnInit(): void; ngOnChanges(): void; calcRelativeDate(): void; isNotValid(): boolean; ceil(value: any): number; floor(value: any): number; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class ToastComponent implements OnInit { service: WsiToastService; constructor(service: WsiToastService); ngOnInit(): void; isTemplate(toast: any): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface ModalItem { name: string; content: any; title: string; body: string; options?: NgbModalOptions; ref?: NgbModalRef; lastResult?: any; lastReason?: string; } declare class WsiModalService { modal: NgbModal; modals: ModalItem[]; openModals: ModalItem[]; onModalUpdate: Subject; constructor(modal: NgbModal); private closeModal; private listenModal; open(item: ModalItem): ModalItem; getDefaultOptions(): NgbModalOptions; getDismissReason(reason: any): string; getModal(name: string): ModalItem; updateModal(name: string, item: ModalItem): boolean; isModalOpen(item: ModalItem): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class ModalsComponent implements OnInit { private service; okContent: any; okModalItem: ModalItem; okCancelContent: any; okCancelModalItem: ModalItem; yesContent: any; yesModalItem: ModalItem; yesNoContent: any; yesNoModalItem: ModalItem; constructor(service: WsiModalService); ngOnInit(): void; ngAfterViewInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } interface AuthEntityRequest { id: number; } interface AuthEntity extends AuthEntityRequest { name: I18nText; parent_id?: number; children?: Array; links: Array; path: AuthEntity[]; } interface Award { id: number; name: I18nText; description: I18nText; entity: AuthEntity; has_certificate: boolean; sort: number; } interface AwardRequest { name: I18nText; description: I18nText; entity: AuthEntityRequest; has_certificate: boolean; sort: number; } interface AwardContainer { awards: Award[]; } declare enum RecipientAwardCertificateType { 'DIGITAL' = "DIGITAL", 'PRINT' = "PRINT" } interface RecipientAwardCertificate { id?: number; certificate_unique_id: string; certificate_dropbox_path: string; certificate_type?: RecipientAwardCertificateType; } interface PersonAward { id: number; person_id: number; award: Award; presented_at: number; extra_information: string; public_extra_information: string; last_updated: string; certificates?: RecipientAwardCertificate[]; } interface MemberAward { id: number; member_id: number; award: Award; presented_at: number; extra_information: string; public_extra_information?: string; last_updated: string; certificates?: RecipientAwardCertificate[]; } interface OrganizationAward { id: number; organization_id: number; award: Award; presented_at: number; extra_information: string; public_extra_information?: string; last_updated: string; certificates?: RecipientAwardCertificate[]; } declare class AwardService extends WsService { private wsi; private http; private apiAwardsURL; constructor(wsi: WorldskillsAngularLibService, http: HttpClient); getList(entityId?: number): Observable; getListUnderWSIEntity(): Observable; get(awardId: number): Observable; create(awardRequest: AwardRequest, rOpt?: RequestOptions): Observable; create(awardRequest: AwardRequest, params: FetchParams, rOpt?: RequestOptions): Observable; create(awardRequest: AwardRequest, mOpt: MulticastOptions, rOpt?: RequestOptions): Observable; create(awardRequest: AwardRequest, params: FetchParams, mOpt: MulticastOptions, rOpt?: RequestOptions): Observable; update(awardId: number, awardRequest: AwardRequest, rOpt?: RequestOptions): Observable; update(awardId: number, awardRequest: AwardRequest, params: FetchParams, rOpt?: RequestOptions): Observable; update(awardId: number, awardRequest: AwardRequest, mOpt: MulticastOptions, rOpt?: RequestOptions): Observable; update(awardId: number, awardRequest: AwardRequest, params: FetchParams, mOpt: MulticastOptions, rOpt?: RequestOptions): Observable; delete(awardId: number): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface RecipientAwardRequest { id: number; award: Award; presented_at: number; extra_information?: string; public_extra_information?: string; certificates?: RecipientAwardCertificate[]; } declare class RecipientAwardFormComponent implements OnInit { private awardService; recipientAward: PersonAward | MemberAward | OrganizationAward; save: EventEmitter; cancel: EventEmitter; form: NgForm; certificateEnabled: boolean; certificates: RecipientAwardCertificate[]; awards: Award[]; selectedAward: Award; constructor(awardService: AwardService); ngOnInit(): void; get awardGroupByRenderer(): (award: Award) => string; loadAwards(): void; saveRecipientAward(): void; awardSelectionChange($event: SelectChangeEvent): void; certificatesEmitReceiver(pac: RecipientAwardCertificate[]): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class RecipientAwardListComponent implements OnInit { canCreate: boolean; canUpdate: boolean; canDelete: boolean; recipientAwards: PersonAward[] | MemberAward[] | OrganizationAward[]; certificateEnabled: boolean; create: EventEmitter; update: EventEmitter; delete: EventEmitter; addAward: boolean; editRecipientAward: PersonAward | MemberAward | OrganizationAward; constructor(); ngOnInit(): void; deleteRecipientAward(ra: PersonAward | MemberAward | OrganizationAward): void; saveRecipientAward(ra: RecipientAwardRequest): void; closeModal(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class WsSpinnerComponent implements OnInit { constructor(); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class ModalComponent implements OnChanges { private modalService; open: boolean; options: NgbModalOptions; onClose: EventEmitter; content: TemplateRef; private modalRef; constructor(modalService: NgbModal); openModal(): void; closeModal(): void; ngOnChanges(changes: SimpleChanges): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class PanelRowActionsComponent implements OnInit { private translateService; edit: EventEmitter; view: EventEmitter; delete: EventEmitter; editLabel: string; viewLabel: string; deleteLabel: string; editDisabled: boolean; viewDisabled: boolean; deleteDisabled: boolean; constructor(translateService: TranslateService); ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class RecipientAwardCertificateFormComponent implements OnInit { certificatesEmitter: EventEmitter; get certificates(): RecipientAwardCertificate[]; set certificates(certs: RecipientAwardCertificate[]); _certificates: RecipientAwardCertificate[]; certificateTypes: RecipientAwardCertificateType[]; constructor(); ngOnInit(): void; addCert(): void; generateNewUniqueID(cert: RecipientAwardCertificate): void; emitValues(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class WSTranslate implements PipeTransform { wsiTranslate: WsiTranslateService; constructor(wsiTranslate: WsiTranslateService); transform(key: string): any; flatten(obj: any): any; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } declare const translateConfig: ModuleWithProviders; declare class WorldskillsAngularLibModule { static forRoot(environment: any): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } interface APIError { code: string; user_msg: string; dev_msg: string; errors?: string[]; } declare class FilterPipe implements PipeTransform { transform(items: T[], search: string | null, keys: Array): T[]; transform(items: T[], predicate: (item: T, index: number, items: T[]) => boolean): T[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } declare class DefaultRelativeDateProccessor implements RelativeDateProcessor { /** * @deprecated The method should not be used. use tthe relative-date component instead */ handlePastDate(date: Date): string; /** * @deprecated The method should not be used. use tthe relative-date component instead */ handleFutureDate(date: Date): string; } declare enum WSIDateFormat { default = "d MMMM yyyy", defaultWithDay = "EEEE, d MMMM yyyy", numeric = "dd.MM.yy" } declare enum WSITimeFormat { TwentyFourHour = "HH:mm", TwentyFourHourGMT = "HH:mm (O)", TwelveHour = "hh.mm aa.", TwelveHourGMT = "hh.mm aa. (O)" } /** * Utility class for array operations with type safety and performance optimizations */ declare class ArrayUtil { /** * Pushes all items from the second array into the first array. * This method mutates the first array and triggers UI updates (unlike concat). * @param first - The target array to push items into * @param second - The source array to push items from * @returns The modified first array */ static pushMany(first: T[], second: T[]): T[]; /** * Removes duplicate primitive values from an array using Set for O(n) performance. * @param arr - The array to deduplicate * @returns A new array with unique values only */ static dedupePrimitive(arr: T[]): T[]; /** * Removes duplicate objects from an array based on a key selector function. * @param arr - The array to deduplicate * @param keySelector - Function to extract the key for comparison * @returns A new array with unique objects based on the key */ static dedupeByKey(arr: T[], keySelector: (item: T) => K): T[]; /** * Checks if the given object is an array. * @param obj - The object to check * @returns True if the object is an array, false otherwise */ static isArray(obj: unknown): obj is unknown[]; /** * Flattens an array of objects with optional children properties. * Supports recursive flattening of nested structures. * @param entities - Array of objects that may contain children * @param recursive - Whether to recursively flatten nested children (default: false) * @returns Flattened array containing all entities and their children */ static flatten(entities: T[], recursive?: boolean): T[]; /** * Splits an array into chunks of specified size. * @param arr - The array to chunk * @param size - The size of each chunk * @returns Array of chunks */ static chunk(arr: T[], size: number): T[][]; /** * Groups array elements by a key selector function. * @param arr - The array to group * @param keySelector - Function to extract the grouping key * @returns Object with keys as group identifiers and values as arrays of grouped items */ static groupBy(arr: T[], keySelector: (item: T) => K): Record; /** * Finds the intersection of two arrays (elements present in both). * @param arr1 - First array * @param arr2 - Second array * @returns Array containing elements present in both arrays */ static intersection(arr1: T[], arr2: T[]): T[]; /** * Finds the difference between two arrays (elements in first but not in second). * @param arr1 - First array * @param arr2 - Second array * @returns Array containing elements in arr1 but not in arr2 */ static difference(arr1: T[], arr2: T[]): T[]; /** * Checks if an array is empty or null/undefined. * @param arr - The array to check * @returns True if array is empty, null, or undefined */ static isEmpty(arr: unknown[] | null | undefined): boolean; /** * Safely gets an element at the specified index, returning undefined for out-of-bounds access. * @param arr - The array to access * @param index - The index to access * @returns The element at the index or undefined if out of bounds */ static safeGet(arr: T[], index: number): T | undefined; /** * Moves an element from one index to another in an array. * @param arr - The array to modify * @param fromIndex - The source index * @param toIndex - The destination index * @returns A new array with the element moved */ static move(arr: T[], fromIndex: number, toIndex: number): T[]; } declare class DateUtil { static toJavaDateString(date: Date, locale: string): string; } declare class ErrorUtil { static getErrorMsg(error: any, defaultErrorMessage: string): string; static hasApiError(error: any): boolean; static arrayBufferToJSON(error: HttpErrorResponse): APIError; static captureAPIError(type: string, name: string, action: string, error: any, msg: string): void; } declare class GenericUtil { static isNullOrUndefined(obj: any): boolean; static getValueOrDefault(value: any, defaultValue: T): T; } declare class HttpUtil { static objectToParams(obj: {}): HttpParams; static isNotLoggedIn(err: HttpErrorResponse, notLoggedInCode: string): boolean; static hasStaleToken(err: HttpErrorResponse, authorizationMissingCode?: string): boolean; } declare class HtmlUtil { static txt(html: string): string; } declare class I18nUtil { static instanceOfI18nModel(object: any): object is I18nText; static setObjectI18n(object: any, langCode: string): any; } declare class LangUtil { static getDefaultLanguages(): Language[]; static getDefaultLanguage(): Language; } declare class ObjectUtil { static stripUndefined(obj: any, deep?: boolean): any; static stripNullOrUndefined(obj: any, deep?: boolean): any; } declare class RouterUtil { static lastNavigationEventWithOrInitialObservable(router: Router, name?: any): Observable; static getResolvedUrl(route: ActivatedRouteSnapshot): string; static getConfiguredUrl(route: ActivatedRouteSnapshot): string; } declare class RxjsUtil { static loaderSubscriber(...subscribables: Array | WsService>): Observable; } declare class UserRoleUtil { static userHasRoles(user: User, appId: number, ...roles: Array): boolean; static userHasRolesOfEntity(user: User, appId: number, entityId: number, ...roles: Array): boolean; static userHasAllRoles(user: User, appId: number, ...roles: Array): boolean; static userHasAllRolesOfEntity(user: User, appId: number, entityId: number, ...roles: Array): boolean; static userHasRolesOfAnyApp(user: User, ...roles: Array): boolean; static userHasRolesOfEntityOfAnyApp(user: User, entityId: number, ...roles: Array): boolean; static userHasAllRolesOfAnyApp(user: User, ...roles: Array): boolean; static userHasAllRolesOfEntityOfAnyApp(user: User, entityId: number, ...roles: Array): boolean; } /** * Utility class for converting numbers to ordinal format (1st, 2nd, 3rd, 4th, etc.) * Supports multiple locales and formatting options */ declare class OrdinalUtil { /** * Converts a number to its ordinal representation in English (e.g., 1 → "1st", 2 → "2nd") * @param num - The number to convert to ordinal format * @param options - Optional formatting options * @returns The ordinal string representation * @throws Error if input is not a valid number * * @example * OrdinalUtil.toOrdinal(1) // "1st" * OrdinalUtil.toOrdinal(22) // "22nd" * OrdinalUtil.toOrdinal(103) // "103rd" */ static toOrdinal(num: number, options?: OrdinalOptions): string; /** * Legacy method name for backward compatibility * @deprecated Use toOrdinal() instead */ static applyDefault(i: number): string; /** * Gets just the ordinal suffix for a number (st, nd, rd, th) * @param num - The number to get the suffix for * @param locale - The locale for the suffix (default: 'en') * @returns The ordinal suffix * * @example * OrdinalUtil.getOrdinalSuffix(1) // "st" * OrdinalUtil.getOrdinalSuffix(22) // "nd" */ static getOrdinalSuffix(num: number, locale?: string): string; /** * Converts an array of numbers to their ordinal representations * @param numbers - Array of numbers to convert * @param options - Optional formatting options * @returns Array of ordinal strings */ static toOrdinalArray(numbers: number[], options?: OrdinalOptions): string[]; /** * Checks if a string is a valid ordinal number * @param str - The string to check * @param locale - The locale to check against (default: 'en') * @returns True if the string is a valid ordinal * * @example * OrdinalUtil.isOrdinal("1st") // true * OrdinalUtil.isOrdinal("22nd") // true * OrdinalUtil.isOrdinal("invalid") // false */ static isOrdinal(str: string, locale?: string): boolean; /** * Parses an ordinal string back to its numeric value * @param ordinalStr - The ordinal string to parse (e.g., "1st", "22nd") * @param locale - The locale of the ordinal string (default: 'en') * @returns The numeric value * @throws Error if the string is not a valid ordinal * * @example * OrdinalUtil.parseOrdinal("1st") // 1 * OrdinalUtil.parseOrdinal("22nd") // 22 */ static parseOrdinal(ordinalStr: string, locale?: string): number; /** * Private method to get English ordinal representation */ private static getEnglishOrdinal; /** * Private method to get English ordinal suffix following standard rules: * - Numbers ending in 1 (except 11) get "st" * - Numbers ending in 2 (except 12) get "nd" * - Numbers ending in 3 (except 13) get "rd" * - All others get "th" */ private static getEnglishSuffix; /** * Gets a range of ordinal numbers * @param start - Starting number * @param end - Ending number (inclusive) * @param options - Optional formatting options * @returns Array of ordinal strings * * @example * OrdinalUtil.getOrdinalRange(1, 5) // ["1st", "2nd", "3rd", "4th", "5th"] */ static getOrdinalRange(start: number, end: number, options?: OrdinalOptions): string[]; } /** * Options for ordinal formatting */ interface OrdinalOptions { /** The locale for formatting (default: 'en') */ locale?: string; /** Whether to use absolute value for negative numbers (default: false) */ absoluteValue?: boolean; /** Whether to include the number in the output (default: true) */ includeNumber?: boolean; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ declare const ISO8601_DATE_REGEX: RegExp; /** * @ngModule CommonModule * @description * * Formats a date according to locale rules. * * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch) * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime). * @param format The date-time components to include. See `DatePipe` for details. * @param locale A locale code for the locale format rules to use. * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`), * or a standard UTC/GMT or continental US time zone abbreviation. * If not specified, uses host system settings. * * @returns The formatted date string. * * @see `DatePipe` * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n) * * @publicApi */ declare function formatDate(value: string | number | Date, format: string, locale: string, timezone?: string): string; /** * Converts a value to date. * * Supported input formats: * - `Date` * - number: timestamp * - string: numeric (e.g. "1234"), ISO and date strings in a format supported by * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse). * Note: ISO strings without time return a date without timeoffset. * * Throws if unable to convert to a date. */ declare function toDate(value: string | number | Date): Date; /** * Converts a date in ISO8601 to a Date. * Used instead of `Date.parse` because of browser discrepancies. */ declare function isoStringToDate(match: RegExpMatchArray): Date; declare function isDate(value: any): value is Date; declare const RETURN_URL_KEY = "returnUrl"; declare const USER_CURRENT_KEY = "user.current"; interface RedirectOptions { url?: any; onlyIfExact?: ActivatedRoute | ActivatedRouteSnapshot; showChildRoles?: boolean; } declare class RedirectHandler { protected ngAuthService: NgAuthService; protected router: Router; constructor(ngAuthService: NgAuthService, router: Router); redirectOrReturn(redirectOptions: RedirectOptions): Observable; hasReturnUrl(): boolean; handleReturnUrl(showChildRoles?: boolean): Observable; redirectUserToUrl(user: User, returnUrl: string, skipLocationChange?: boolean): void; redirectUserToRoute(user: User, route: any): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class RedirectEventHandler { protected ngAuthService: NgAuthService; protected router: Router; constructor(ngAuthService: NgAuthService, router: Router); getReturnUrl(): string; getUser(showRoles: boolean): Observable; redirectUserToUrl(returnUrl: string, skipLocationChange?: boolean): void; listen(): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface AuthGuardAccess { appCode: number; name: string; } declare class GuardService { private ngAuthService; private wsi; private router; private config; constructor(ngAuthService: NgAuthService, wsi: WorldskillsAngularLibService, router: Router); canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree; protected getCurrentUser(): User; protected login(state: RouterStateSnapshot): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare const DEFAULT_LABELS: { clearAllText: string; loadingText: string; notFoundText: string; typeToSearchText: string; placeholder: string; }; declare class WsHttpEncoder implements HttpParameterCodec { encodeKey(key: string): string; encodeValue(value: string): string; decodeKey(key: string): string; decodeValue(value: string): string; } declare const MISSING_LANGUAGE_MESSAGE: (email: string) => string; declare class WsHttpInterceptor implements HttpInterceptor { private wsi; private oAuthService; private config; constructor(wsi: WorldskillsAngularLibService, oAuthService: OAuthService); intercept(req: HttpRequest, next: HttpHandler): Observable>; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class DefaultOptionHandler implements OptionHandler { onOptionSelect(pollType: string, currentSelection: any[], newSelectedValue: any, selectionIndex: number): any[]; } interface Page { offset: number; limit: number; total: number; items: T[]; } interface PollList { id: number; title: I18nText; entity: WsEntityModel; createdBy: CreatedBy; deleted: boolean; created: Date; slug: string; entityPath: EntityPath; } declare class PollListService { protected wsi: WorldskillsAngularLibService; protected http: HttpClient; endpoint: string; constructor(wsi: WorldskillsAngularLibService, http: HttpClient); list(params: any): Observable>; get(id: number): Observable; getBySlug(slug: string): Observable; create(model: PollList): Observable; update(id: number, model: PollList): Observable; delete(id: number): Observable; undelete(id: number): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class PollService { protected wsi: WorldskillsAngularLibService; protected http: HttpClient; endpoint: string; constructor(wsi: WorldskillsAngularLibService, http: HttpClient); list(params: any): Observable>; select(params: any): Observable; get(id: number): Observable; getAbstains(id: number): Observable; getResults(id: number): Observable; getTrackRecords(id: number): Observable; hasVoted(id: number): Observable; create(model: Poll): Observable; update(id: number, model: Poll): Observable; open(id: number, start: Date, expiry: Date): Observable; close(id: number): Observable; delete(id: number): Observable; undelete(id: number): Observable; reset(id: number, start: Date, expiry: Date): Observable; extend(id: number, expiry: Date): Observable; addVote(pollId: number, votes: VoteEntry): Observable