import { NavigationReason } from '@secret-agent/core-interfaces/INavigation'; import ITypedEventEmitter from '@secret-agent/core-interfaces/ITypedEventEmitter'; export interface IPuppetFrame extends ITypedEventEmitter { id: string; parentId?: string; name?: string; url: string; activeLoaderId: string; navigationReason?: string; disposition?: string; securityOrigin: string; isLoaded: boolean; isDefaultUrl: boolean; isAttached(): boolean; waitForLoad(): Promise; waitForLoader(loaderId?: string): Promise; canEvaluate(isolatedFromWebPageEnvironment: boolean): boolean; evaluate(expression: string, isolateFromWebPageEnvironment?: boolean, options?: { shouldAwaitExpression?: boolean; retriesWaitingForLoad?: number; }): Promise; evaluateOnIsolatedFrameElement(expression: string): Promise; toJSON(): object; } export interface ILifecycleEvents { DOMContentLoaded?: Date; load?: Date; init?: Date; } export interface IPuppetFrameManagerEvents { 'frame-created': { frame: IPuppetFrame; loaderId: string; }; } export interface IPuppetFrameEvents { 'frame-lifecycle': { frame: IPuppetFrame; name: string; loaderId: string; }; 'frame-navigated': { frame: IPuppetFrame; navigatedInDocument?: boolean; loaderId?: string; }; 'frame-requested-navigation': { frame: IPuppetFrame; url: string; reason: NavigationReason; }; }