@coasys/ad4m-connect 0.12.0 → 0.13.0-postmessage-ws-proxy.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/PostMessageWebSocket.d.ts +26 -0
  2. package/dist/components/icons/CheckCircleIcon.d.ts +1 -0
  3. package/dist/components/icons/MapPinIcon.d.ts +1 -0
  4. package/dist/components/icons/TickIcon.d.ts +1 -0
  5. package/dist/components/icons/index.d.ts +4 -0
  6. package/dist/components/shared/Ad4mLogo.d.ts +1 -0
  7. package/dist/components/shared/AppLogo.d.ts +1 -0
  8. package/dist/components/shared/Header.d.ts +1 -0
  9. package/dist/components/shared/Logo.d.ts +1 -0
  10. package/dist/components/states/ErrorState.d.ts +6 -0
  11. package/dist/components/views/ConnectionOptions.d.ts +2 -7
  12. package/dist/components/views/ConnectionOverview.d.ts +22 -0
  13. package/dist/components/views/HostBrowser.d.ts +0 -1
  14. package/dist/components/views/HostDetail.d.ts +2 -1
  15. package/dist/components/views/Hosting.d.ts +22 -0
  16. package/dist/components/views/LocalAuthentication.d.ts +2 -1
  17. package/dist/components/views/LoggedInDashboard.d.ts +20 -2
  18. package/dist/components/views/MultiUserAuth.d.ts +26 -0
  19. package/dist/components/views/RemoteAuthentication.d.ts +7 -1
  20. package/dist/components/views/RemoteConnection.d.ts +19 -0
  21. package/dist/components/views/RequestCapability.d.ts +16 -0
  22. package/dist/components/views/ScanQRCode.d.ts +14 -0
  23. package/dist/components/views/Settings.d.ts +19 -0
  24. package/dist/components/views/Start.d.ts +19 -0
  25. package/dist/components/views/old/Hosting.d.ts +22 -0
  26. package/dist/components/views/old/MultiUserAuth.d.ts +26 -0
  27. package/dist/components/views/old/RemoteConnection.d.ts +19 -0
  28. package/dist/components/views/old/RequestCapability.d.ts +16 -0
  29. package/dist/components/views/old/ScanQRCode.d.ts +14 -0
  30. package/dist/components/views/old/Settings.d.ts +19 -0
  31. package/dist/components/views/old/Start.d.ts +19 -0
  32. package/dist/core.d.ts +23 -7
  33. package/dist/core.js +11323 -1545
  34. package/dist/core.js.map +7 -0
  35. package/dist/index.js +15175 -2293
  36. package/dist/index.js.map +7 -0
  37. package/dist/old/components/InvalidToken.d.ts +0 -0
  38. package/dist/old/components/VerifyCode.d.ts +0 -0
  39. package/dist/old/core.d.ts +0 -0
  40. package/dist/old/electron.d.ts +0 -0
  41. package/dist/old/state/ConnectState.d.ts +0 -0
  42. package/dist/old/state/index.d.ts +0 -0
  43. package/dist/old/utils.d.ts +0 -0
  44. package/dist/old/views/Hosting.d.ts +0 -0
  45. package/dist/old/views/MultiUserAuth.d.ts +0 -0
  46. package/dist/old/views/RemoteConnection.d.ts +0 -0
  47. package/dist/old/views/RequestCapability.d.ts +0 -0
  48. package/dist/old/views/ScanQRCode.d.ts +0 -0
  49. package/dist/old/views/Settings.d.ts +0 -0
  50. package/dist/old/views/Start.d.ts +0 -0
  51. package/dist/old/web.d.ts +0 -0
  52. package/dist/services/hostIndex.d.ts +2 -2
  53. package/dist/state/ConnectState.d.ts +101 -0
  54. package/dist/state/index.d.ts +2 -0
  55. package/dist/types.d.ts +38 -0
  56. package/dist/utils.d.ts +8 -1
  57. package/dist/utils.js +99 -1
  58. package/dist/utils.js.map +7 -0
  59. package/dist/web.d.ts +22 -2
  60. package/dist/web.js +13592 -1947
  61. package/dist/web.js.map +7 -0
  62. package/package.json +9 -7
  63. package/public/dialog.html +0 -49
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,9 +2,9 @@ import type { RemoteHost, UserInfo } from '../types';
2
2
  import type { Ad4mClient } from '@coasys/ad4m';
3
3
  /** Fetch available hosts from the central index API */
4
4
  export declare function fetchHosts(indexUrl?: string): Promise<RemoteHost[]>;
5
- /** Fetch current user info from the executor via GraphQL */
5
+ /** Fetch current user info from the executor */
6
6
  export declare function fetchUserInfo(ad4mClient: Ad4mClient): Promise<UserInfo>;
7
- /** Trigger a payment request via the executor's GraphQL API */
7
+ /** Trigger a payment request via the executor */
8
8
  export declare function requestPayment(ad4mClient: Ad4mClient, amountHOT: number): Promise<{
9
9
  success: boolean;
10
10
  message: string;
@@ -0,0 +1,101 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ /**
3
+ * UI View States
4
+ */
5
+ export type UIView = 'connection_overview' | 'remote_connection' | 'settings' | 'start' | 'qr' | 'requestcap' | 'verifycode' | 'disconnected' | 'hosting' | 'agentlocked' | 'multiuser_auth';
6
+ /**
7
+ * Multi-user authentication steps
8
+ */
9
+ export type MultiUserStep = 'email' | 'password' | 'code';
10
+ export type MultiUserVerificationType = 'signup' | 'login';
11
+ /**
12
+ * Form state for different auth methods
13
+ */
14
+ interface FormState {
15
+ email: string;
16
+ password: string;
17
+ hostingStep: number;
18
+ multiUserEmail: string;
19
+ multiUserPassword: string;
20
+ multiUserVerificationCode: string;
21
+ multiUserStep: MultiUserStep;
22
+ multiUserVerificationType: MultiUserVerificationType;
23
+ remoteUrl: string;
24
+ code: string | null;
25
+ }
26
+ /**
27
+ * Error state for different operations
28
+ */
29
+ interface ErrorState {
30
+ password: string | null;
31
+ hostingNotRunning: string | null;
32
+ verifyCode: string | null;
33
+ multiUser: string | null;
34
+ remote: string | null;
35
+ }
36
+ /**
37
+ * Loading state for async operations
38
+ */
39
+ interface LoadingState {
40
+ hosting: boolean;
41
+ multiUser: boolean;
42
+ remoteDetecting: boolean;
43
+ }
44
+ /**
45
+ * Detection state
46
+ */
47
+ interface DetectionState {
48
+ localDetected: boolean;
49
+ remoteMultiUserDetected: boolean | null;
50
+ }
51
+ /**
52
+ * Reactive state controller for Ad4m Connect
53
+ * Manages all UI and form state in a centralized, reactive way
54
+ */
55
+ export declare class ConnectState implements ReactiveController {
56
+ private host;
57
+ currentView: UIView;
58
+ isOpen: boolean;
59
+ isMobile: boolean;
60
+ isRemote: boolean;
61
+ hasClickedDownload: boolean;
62
+ forms: FormState;
63
+ errors: ErrorState;
64
+ loading: LoadingState;
65
+ detection: DetectionState;
66
+ constructor(host: ReactiveControllerHost);
67
+ hostConnected(): void;
68
+ hostDisconnected(): void;
69
+ get canSubmitMultiUser(): boolean;
70
+ get canSubmitVerificationCode(): boolean;
71
+ get hasAnyError(): boolean;
72
+ get isAnyLoading(): boolean;
73
+ get showLocalOption(): boolean;
74
+ get showRemoteOption(): boolean;
75
+ get showQROption(): boolean;
76
+ get showDownload(): boolean;
77
+ setView(view: UIView): void;
78
+ toggleOpen(): void;
79
+ open(): void;
80
+ close(): void;
81
+ setMobile(isMobile: boolean): void;
82
+ setRemote(isRemote: boolean): void;
83
+ setHasClickedDownload(clicked: boolean): void;
84
+ updateForm<K extends keyof FormState>(field: K, value: FormState[K]): void;
85
+ resetMultiUserForm(): void;
86
+ nextMultiUserStep(): void;
87
+ previousMultiUserStep(): void;
88
+ toggleMultiUserVerificationType(): void;
89
+ setError<K extends keyof ErrorState>(field: K, message: string | null): void;
90
+ clearError<K extends keyof ErrorState>(field: K): void;
91
+ clearAllErrors(): void;
92
+ setLoading<K extends keyof LoadingState>(field: K, isLoading: boolean): void;
93
+ setLocalDetected(detected: boolean): void;
94
+ setRemoteMultiUserDetected(detected: boolean | null): void;
95
+ private requestUpdate;
96
+ /**
97
+ * Reset all state to initial values
98
+ */
99
+ reset(): void;
100
+ }
101
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ConnectState } from './ConnectState';
2
+ export type { UIView, MultiUserStep, MultiUserVerificationType } from './ConnectState';
package/dist/types.d.ts CHANGED
@@ -18,7 +18,45 @@ export type Ad4mConnectOptions = {
18
18
  userEmail?: string;
19
19
  userPassword?: string;
20
20
  allowedOrigins?: string[];
21
+ hostIndexUrl?: string;
22
+ lowCreditThreshold?: number;
23
+ onCreditsDepleted?: () => void;
24
+ onUseApp?: () => void;
21
25
  };
22
26
  export type ConfigStates = "port" | "url" | "token";
23
27
  export type AuthStates = "authenticated" | "locked" | "unauthenticated";
24
28
  export type ConnectionStates = "connecting" | "connected" | "error" | "port-not-found" | "not-connected" | "disconnected" | "checking-local";
29
+ /** Host as returned by the central index API */
30
+ export type RemoteHost = {
31
+ id: string;
32
+ name: string;
33
+ description?: string;
34
+ profilePicUrl: string;
35
+ location: string;
36
+ url: string;
37
+ rates: PricingItem[];
38
+ aiModels: string[];
39
+ computeSpecs?: string | null;
40
+ };
41
+ /** Flexible pricing item — avoids locking the interface to a specific pricing model */
42
+ export type PricingItem = {
43
+ description: string;
44
+ priceInHOT: number;
45
+ };
46
+ /** User account data returned by the host after auth */
47
+ export type UserInfo = {
48
+ email: string;
49
+ remainingCredits: number;
50
+ hotWalletAddress: string | null;
51
+ freeAccess: boolean;
52
+ };
53
+ /** A single compute activity log entry */
54
+ export type ComputeLogEntryData = {
55
+ id: number;
56
+ userEmail: string;
57
+ timestamp: string;
58
+ operation: string;
59
+ summary: string | null;
60
+ cost: number;
61
+ creditsAfter: number;
62
+ };
package/dist/utils.d.ts CHANGED
@@ -2,4 +2,11 @@ export declare function isEmbedded(): boolean;
2
2
  export declare function setLocal(key: string, value: string): void;
3
3
  export declare function getLocal(key: string): string | null;
4
4
  export declare function removeLocal(key: string): void;
5
- export declare function connectWebSocket(url: any, timeout?: number): Promise<unknown>;
5
+ /** Convert a WebSocket URL to an HTTP base URL. */
6
+ export declare function wsUrlToHttpBase(wsUrl: string): string;
7
+ /** Check that the AD4M executor is reachable at the given HTTP base URL. */
8
+ export declare function checkConnection(baseUrl: string, timeout?: number): Promise<void>;
9
+ /** Extract up to 2 initials from a name (first letter of first two words) */
10
+ export declare function getInitials(name: string): string;
11
+ /** Deterministic hue (0-359) from a string — same input always yields same color */
12
+ export declare function getHue(str: string): number;
package/dist/utils.js CHANGED
@@ -1 +1,99 @@
1
- var l=(o,s,t)=>new Promise((c,e)=>{var r=n=>{try{u(t.next(n))}catch(d){e(d)}},p=n=>{try{u(t.throw(n))}catch(d){e(d)}},u=n=>n.done?c(n.value):Promise.resolve(n.value).then(r,p);u((t=t.apply(o,s)).next())});var a="0.12.0";function f(){return typeof window!="undefined"&&window.self!==window.top}function i(){try{localStorage.setItem("test",""),localStorage.removeItem("test")}catch(o){return!1}return!0}function w(o,s){i()&&localStorage.setItem(`${a}/${o}`,s)}function k(o){return i()?localStorage.getItem(`${a}/${o}`):null}function y(o){i()&&localStorage.removeItem(`${a}/${o}`)}function v(o,s=1e4){return l(this,null,function*(){return Promise.race([new Promise((t,c)=>{let e;try{e=new WebSocket(o,"graphql-transport-ws"),e.onopen=()=>{e.close(),t(e)},e.onerror=r=>{c(r)},e.onclose=r=>{r.code!==1e3&&c(new Error(`WebSocket closed with code ${r.code}: ${r.reason}`))}}catch(r){e&&e.close(),c(r)}}),new Promise((t,c)=>{setTimeout(()=>{c(new Error("WebSocket connection timed out"))},s)})])})}export{v as connectWebSocket,k as getLocal,f as isEmbedded,y as removeLocal,w as setLocal};
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+
22
+ // ../package.json
23
+ var version = "0.13.0-test-6";
24
+
25
+ // src/utils.ts
26
+ function isEmbedded() {
27
+ return typeof window !== "undefined" && window.self !== window.top;
28
+ }
29
+ function localStorageSupported() {
30
+ try {
31
+ localStorage.setItem("test", "");
32
+ localStorage.removeItem("test");
33
+ } catch (e) {
34
+ return false;
35
+ }
36
+ return true;
37
+ }
38
+ function setLocal(key, value) {
39
+ if (localStorageSupported())
40
+ localStorage.setItem(`${version}/${key}`, value);
41
+ }
42
+ function getLocal(key) {
43
+ if (localStorageSupported())
44
+ return localStorage.getItem(`${version}/${key}`);
45
+ return null;
46
+ }
47
+ function removeLocal(key) {
48
+ if (localStorageSupported())
49
+ localStorage.removeItem(`${version}/${key}`);
50
+ }
51
+ function wsUrlToHttpBase(wsUrl) {
52
+ return wsUrl.replace(/^ws(s?):\/\//, (_, s) => `http${s}://`);
53
+ }
54
+ function checkConnection(baseUrl, timeout = 1e4) {
55
+ return __async(this, null, function* () {
56
+ const controller = new AbortController();
57
+ const timer = setTimeout(() => controller.abort(), timeout);
58
+ try {
59
+ const res = yield fetch(`${baseUrl}/health`, { signal: controller.signal });
60
+ if (!res.ok)
61
+ throw new Error(`Health check returned ${res.status}`);
62
+ const body = yield res.json();
63
+ if ((body == null ? void 0 : body.status) !== "ok")
64
+ throw new Error("Not an AD4M executor");
65
+ } catch (e) {
66
+ if (e.name === "AbortError")
67
+ throw new Error("Connection timed out");
68
+ throw e;
69
+ } finally {
70
+ clearTimeout(timer);
71
+ }
72
+ });
73
+ }
74
+ function getInitials(name) {
75
+ const clean = name.trim();
76
+ if (!clean)
77
+ return "";
78
+ const words = clean.split(/\s+/);
79
+ if (words.length >= 2)
80
+ return (words[0][0] + words[1][0]).toUpperCase();
81
+ return clean.slice(0, 2).toUpperCase();
82
+ }
83
+ function getHue(str) {
84
+ let hash = 0;
85
+ for (let i = 0; i < str.length; i++)
86
+ hash = str.charCodeAt(i) + ((hash << 5) - hash);
87
+ return (hash % 360 + 360) % 360;
88
+ }
89
+ export {
90
+ checkConnection,
91
+ getHue,
92
+ getInitials,
93
+ getLocal,
94
+ isEmbedded,
95
+ removeLocal,
96
+ setLocal,
97
+ wsUrlToHttpBase
98
+ };
99
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils.ts"],
4
+ "sourcesContent": ["//@ts-ignore\nimport { version } from \"../../package.json\";\n\nexport function isEmbedded(): boolean {\n return typeof window !== 'undefined' && window.self !== window.top;\n}\n\nfunction localStorageSupported(): boolean {\n try {\n localStorage.setItem(\"test\", \"\");\n localStorage.removeItem(\"test\");\n } catch (e) {\n return false;\n }\n return true;\n}\n\nexport function setLocal(key: string, value: string): void {\n if (localStorageSupported()) localStorage.setItem(`${version}/${key}`, value);\n}\n\nexport function getLocal(key: string): string | null {\n if (localStorageSupported()) return localStorage.getItem(`${version}/${key}`);\n return null;\n}\n\nexport function removeLocal(key: string): void {\n if (localStorageSupported()) localStorage.removeItem(`${version}/${key}`);\n}\n\n/** Convert a WebSocket URL to an HTTP base URL. */\nexport function wsUrlToHttpBase(wsUrl: string): string {\n return wsUrl.replace(/^ws(s?):\\/\\//, (_, s) => `http${s}://`);\n}\n\n/** Check that the AD4M executor is reachable at the given HTTP base URL. */\nexport async function checkConnection(baseUrl: string, timeout = 10000): Promise<void> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeout);\n try {\n const res = await fetch(`${baseUrl}/health`, { signal: controller.signal });\n if (!res.ok) throw new Error(`Health check returned ${res.status}`);\n const body = await res.json();\n if (body?.status !== 'ok') throw new Error('Not an AD4M executor');\n } catch (e: any) {\n if (e.name === 'AbortError') throw new Error('Connection timed out');\n throw e;\n } finally {\n clearTimeout(timer);\n }\n}\n\n/** Extract up to 2 initials from a name (first letter of first two words) */\nexport function getInitials(name: string): string {\n const clean = name.trim();\n if (!clean) return \"\";\n const words = clean.split(/\\s+/);\n if (words.length >= 2) return (words[0][0] + words[1][0]).toUpperCase();\n return clean.slice(0, 2).toUpperCase();\n}\n\n/** Deterministic hue (0-359) from a string \u2014 same input always yields same color */\nexport function getHue(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);\n return ((hash % 360) + 360) % 360;\n}\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,aAAsB;AACpC,SAAO,OAAO,WAAW,eAAe,OAAO,SAAS,OAAO;AACjE;AAEA,SAAS,wBAAiC;AACxC,MAAI;AACF,iBAAa,QAAQ,QAAQ,EAAE;AAC/B,iBAAa,WAAW,MAAM;AAAA,EAChC,SAAS,GAAP;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,SAAS,KAAa,OAAqB;AACzD,MAAI,sBAAsB;AAAG,iBAAa,QAAQ,GAAG,WAAW,OAAO,KAAK;AAC9E;AAEO,SAAS,SAAS,KAA4B;AACnD,MAAI,sBAAsB;AAAG,WAAO,aAAa,QAAQ,GAAG,WAAW,KAAK;AAC5E,SAAO;AACT;AAEO,SAAS,YAAY,KAAmB;AAC7C,MAAI,sBAAsB;AAAG,iBAAa,WAAW,GAAG,WAAW,KAAK;AAC1E;AAGO,SAAS,gBAAgB,OAAuB;AACrD,SAAO,MAAM,QAAQ,gBAAgB,CAAC,GAAG,MAAM,OAAO,MAAM;AAC9D;AAGA,SAAsB,gBAAgB,SAAiB,UAAU,KAAsB;AAAA;AACrF,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,OAAO;AAC1D,QAAI;AACF,YAAM,MAAM,MAAM,MAAM,GAAG,kBAAkB,EAAE,QAAQ,WAAW,OAAO,CAAC;AAC1E,UAAI,CAAC,IAAI;AAAI,cAAM,IAAI,MAAM,yBAAyB,IAAI,QAAQ;AAClE,YAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,WAAI,6BAAM,YAAW;AAAM,cAAM,IAAI,MAAM,sBAAsB;AAAA,IACnE,SAAS,GAAP;AACA,UAAI,EAAE,SAAS;AAAc,cAAM,IAAI,MAAM,sBAAsB;AACnE,YAAM;AAAA,IACR,UAAE;AACA,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF;AAAA;AAGO,SAAS,YAAY,MAAsB;AAChD,QAAM,QAAQ,KAAK,KAAK;AACxB,MAAI,CAAC;AAAO,WAAO;AACnB,QAAM,QAAQ,MAAM,MAAM,KAAK;AAC/B,MAAI,MAAM,UAAU;AAAG,YAAQ,MAAM,GAAG,KAAK,MAAM,GAAG,IAAI,YAAY;AACtE,SAAO,MAAM,MAAM,GAAG,CAAC,EAAE,YAAY;AACvC;AAGO,SAAS,OAAO,KAAqB;AAC1C,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAK,WAAO,IAAI,WAAW,CAAC,MAAM,QAAQ,KAAK;AAC/E,UAAS,OAAO,MAAO,OAAO;AAChC;",
6
+ "names": []
7
+ }
package/dist/web.d.ts CHANGED
@@ -4,29 +4,49 @@ import "./components/views/ConnectionOptions";
4
4
  import "./components/views/LocalAuthentication";
5
5
  import "./components/views/RemoteAuthentication";
6
6
  import "./components/views/CurrentState";
7
+ import "./components/views/HostBrowser";
8
+ import "./components/views/HostDetail";
9
+ import "./components/views/LoggedInDashboard";
7
10
  export declare class Ad4mConnectElement extends LitElement {
8
11
  static styles: import("lit").CSSResult[];
9
12
  core: Ad4mConnect;
10
13
  modalOpen: boolean;
11
14
  private currentView;
12
- private connectingToRemoteNode;
13
- private remoteNodeError;
14
15
  private verificationError;
15
16
  private remoteAuthLoading;
16
17
  private remoteAuthState;
17
18
  private emailCodeError;
18
19
  private passwordError;
19
20
  private accountCreationError;
21
+ private hosts;
22
+ private hostsLoading;
23
+ private hostsError;
24
+ private selectedHost;
25
+ private userInfo;
26
+ private lowCredit;
27
+ private requestingPayment;
28
+ private paymentError;
29
+ private openedDueToCreditDepletion;
20
30
  connectedCallback(): void;
21
31
  private changePort;
22
32
  private connectLocalNode;
23
33
  private verifyLocalAd4mCode;
34
+ private browseHosts;
35
+ private retryFetchHosts;
36
+ private selectHost;
37
+ private proceedToAuth;
38
+ private handleAuthSuccess;
39
+ private handleRequestTopUp;
40
+ private handleSetWalletAddress;
24
41
  private connectRemoteNode;
25
42
  private emailLogin;
26
43
  private verifyEmailCode;
27
44
  private passwordLogin;
28
45
  private createAccount;
29
46
  private disconnect;
47
+ private get backTarget();
48
+ private handleBack;
49
+ private resetRemoteAuthState;
30
50
  renderViews(): import("lit").TemplateResult<1>;
31
51
  render(): import("lit").TemplateResult<1>;
32
52
  }