import { FieldsObject, HitType } from 'userdive/lib/types'; import AgentCore from './core'; import { SetType, State } from './types'; export declare type PluginConstructor = new (tracker: Agent, pluginOptions?: object) => void; export default class Agent { private core; private linkerName; private plugins; constructor(projectId: string, cookieDomain: string, fieldsObject?: FieldsObject); send(type: HitType | FieldsObject, data?: FieldsObject | string): AgentCore; set(key: SetType | FieldsObject, value?: string | number): State; get(key: 'clientId' | 'linkerParam'): string; provide(name: string, pluginConstructor: PluginConstructor): any; require(pluginName: string, pluginOptions?: any): boolean; run(pluginName: string, methodName: string, ...args: any[]): boolean; subscribe(target: any, eventName: string, handler: (event: any) => void): () => void; }