import type { PublishState } from './publishState'; import type { PluginListing, RegistryPlugin } from '../types'; /** One plugin on the page: what this organization has of it and what the registry holds, joined by slug. */ export interface PluginRowData { slug: string; listing?: PluginListing; entry?: RegistryPlugin; } export type PluginsTab = 'all' | 'running' | 'installed' | 'notInstalled' | 'registry'; /** What the registry viewer may do here; null for anyone outside the dev team. */ export interface DevTeamView { canGrant: boolean; canPublishFromDisk: boolean; } export type RegistryStanding = PublishState | { kind: 'published'; version: string | null; } | { kind: 'shared'; version: string; }; export declare function mergePluginRows(listings: PluginListing[], registryPlugins: RegistryPlugin[]): PluginRowData[]; /** `all` is every row some other shown tab lists, so it never reveals a row the viewer's tabs hide. */ export declare function isInTab(row: PluginRowData, tab: PluginsTab, shown: readonly PluginsTab[]): boolean; export declare function isMine(row: PluginRowData): boolean; export declare function matchesSearch(row: PluginRowData, needle: string): boolean; /** Where the plugin stands with the registry, from the dev team's view when they have one. */ export declare function registryStanding(row: PluginRowData, devTeam: DevTeamView | null): RegistryStanding | null; //# sourceMappingURL=pluginRows.d.ts.map