import { Environment } from '../injections'; import { AppName, MenuItem } from '../models'; import { StorageService } from './storage.service'; import * as i0 from "@angular/core"; /** Nome dos eventos enviados ao dataLayer. Todo o detalhe vai nos parametros. */ export type AnalyticsEvent = 'page_view' | 'user_action' | 'app_event'; /** Identificacao da tela corrente, anexada a todos os eventos. */ export interface AnalyticsPage { page_path: string; page_name: string; page_module: string; } /** Identificacao do usuario corrente, anexada a todos os eventos. */ export interface AnalyticsUser { user_id?: number; profile_name?: string; profile_type_id?: number; shipper_id?: number; carrier_id?: number; is_etcd: boolean; } type AnalyticsPayload = Record; export declare class AnalyticsService { private storageService; private appName; private menuOptions; private environment; private static readonly ID_SEGMENT; private static readonly MAX_LABEL_LENGTH; private currentPage; private menuIndex?; constructor(storageService: StorageService, appName?: AppName | null, menuOptions?: MenuItem[] | null, environment?: Environment | null); /** * Registra a troca de tela. Chamado apenas pelo AppComponent, no NavigationEnd. * Alem do `page_view`, sincroniza a identificacao do usuario no Clarity -- * que precisa ser reenviada a cada rota por se tratar de uma SPA. */ pageView(url: string): void; /** * INTERATIVO -- o usuario fez algo deliberado: clicou, buscou, exportou, salvou. * Chamado a mao pelo componente, no inicio do handler. * * @param action nome no formato `objeto_verbo`, sem repetir a tela (`page_name` ja vai junto) * @param extra `label` para o identificador do alvo, `context` para detalhe livre * * @example this.analyticsService.userAction('heat_map_search', { context: { uf: 'SP' } }); */ userAction(action: string, extra?: AnalyticsPayload): void; /** * NAO INTERATIVO -- o sistema respondeu ou exibiu algo: resultado carregado, * lista vazia, erro de negocio, modal automatico. * * @example this.analyticsService.appEvent('heat_map_empty', { context: { points: 0 } }); */ appEvent(action: string, extra?: AnalyticsPayload): void; private push; private get dataLayer(); private get isProduction(); private get env(); private getUser; private realId; private get clarity(); private sendClarityEvent; private slug; private syncClarity; private setClarityTag; private resolvePage; private normalizePath; private findMenu; private getMenuIndex; /** Achata o menuOptions em `rota -> { nome da tela, modulo }`. */ private indexMenu; private safely; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } export {};