import { AppMetadata, BrowserTypes, ImplementationMetadata } from '@finos/fdc3'; import { AppDirectoryApplication, LocalAppDirectory } from '../app-directory.contracts.js'; import { AppHostManifestLookup, BackoffRetryParams, FullyQualifiedAppId, FullyQualifiedAppIdentifier } from '../contracts.js'; export type FullyQualifiedAppDirectoryApplication = AppDirectoryApplication & { appId: FullyQualifiedAppId; }; /** * Convert a local app directory into an array of applications with fully-qualified app IDs. * * Each LocalAppDirectoryEntry is mapped to a FullyQualifiedAppDirectoryApplication by * converting the local appId into a FullyQualifiedAppId derived from the entry URL's hostname. * * @param local - Array of local app directory entries to map * @returns Array of applications with fully-qualified appId and web details */ export declare function mapLocalAppDirectory(local: LocalAppDirectory): FullyQualifiedAppDirectoryApplication[]; export declare function mapLocalApp(local: AppDirectoryApplication, hostname: string): FullyQualifiedAppDirectoryApplication; /** * Build a FullyQualifiedAppId from a URL and an appId. * * The hostname portion of the provided URL is used to form an id of the form: * "@". * * @param url - The app's launch URL (parsed with the URL constructor) * @param appId - The local application identifier * @returns Fully qualified app id string combining appId and the URL hostname */ export declare function mapUrlToFullyQualifiedAppId(url: string, appId: string): FullyQualifiedAppId; /** * Fetches app directory applications from single app directory url */ export declare function getAppDirectoryApplications(url: string, backoffRetry?: BackoffRetryParams): Promise; export declare function getAppDirectoryApplicationsImpl(url: string, backoffRetry: Required, attempt?: number): Promise; export declare function getImplementationMetadata(appIdentifier: FullyQualifiedAppIdentifier, applicationMetadata?: AppMetadata): ImplementationMetadata; export declare function mapApplicationToMetadata(appIdentifier: BrowserTypes.AppIdentifier, appMetadata?: AppMetadata): AppMetadata; export declare function createWebAppDirectoryEntry(appId: string, url: string, title: string, directoryDetails?: Partial>): AppDirectoryApplication; /** * Filters app records (without instanceId) to determine which can be opened as new instances. * Returns true if: * - The app has no instanceId (is an app record, not an active instance), AND * - Either the app is not a singleton, OR no active instance of this app exists * This excludes singleton apps from the "open new" list when they already have a running instance. */ export declare function filterInactiveApps(app: AppMetadata, activeInstances: AppMetadata[], appManifests: AppHostManifestLookup): boolean; /** * Filters to include only active app instances (apps with an instanceId). */ export declare function filterActiveApps(app: AppMetadata): boolean;