Extensions: add Recorder extensions API

This CL adds the extension API for Recorder panel.

Bug: 1325751
Change-Id: Ibe4f13a2fd868530c72eab7562efe9ab33bbddd7
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3657448
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Commit-Queue: Alex Rudenko <alexrudenko@chromium.org>
Reviewed-by: Philip Pfaffe <pfaffe@chromium.org>
diff --git a/extension-api/ExtensionAPI.d.ts b/extension-api/ExtensionAPI.d.ts
index 1c4b50b..ba9d736 100644
--- a/extension-api/ExtensionAPI.d.ts
+++ b/extension-api/ExtensionAPI.d.ts
@@ -94,6 +94,7 @@
       panels: Panels;
       inspectedWindow: InspectedWindow;
       languageServices: LanguageExtensions;
+      recorder: RecorderExtensions;
     }
 
     export interface ExperimentalDevToolsAPI {
@@ -170,6 +171,10 @@
       payload: unknown;
     }
 
+    export interface RecorderExtensionPlugin {
+      stringify(obj: Record<string, any>): Promise<string>;
+    }
+
     export interface LanguageExtensionPlugin {
       /**
        * A new raw module has been loaded. If the raw wasm module references an external debug info module, its URL will be
@@ -272,6 +277,11 @@
       unregisterLanguageExtensionPlugin(plugin: LanguageExtensionPlugin): Promise<void>;
     }
 
+    export interface RecorderExtensions {
+      registerRecorderExtensionPlugin(plugin: RecorderExtensionPlugin, pluginName: string): Promise<void>;
+      unregisterRecorderExtensionPlugin(plugin: RecorderExtensionPlugin): Promise<void>;
+    }
+
     export interface Chrome {
       devtools: DevToolsAPI;
       experimental: {devtools: ExperimentalDevToolsAPI};