export type ExtensionId = Electron.Extension['id'];
export interface ExtensionInstallDetails {
    id: string;
    localizedName: string;
    manifest: chrome.runtime.Manifest;
    icon: Electron.NativeImage;
    browserWindow?: Electron.BrowserWindow;
    frame: Electron.WebFrameMain;
}
export type BeforeInstall = (details: ExtensionInstallDetails) => Promise<{
    action: 'allow' | 'deny';
}>;
export type AfterInstall = (details: ExtensionInstallDetails) => Promise<void>;
export type AfterUninstall = (details: {
    id: ExtensionId;
}) => Promise<void>;
export type ExtensionStatusDetails = {
    session: Electron.Session;
    extensionsPath: string;
};
export type SetExtensionEnabled = (extensionId: ExtensionId, details: ExtensionStatusDetails, enabled: boolean) => Promise<void>;
export type GetExtensionInstallStatus = (extensionId: ExtensionId, details: ExtensionStatusDetails, manifest?: chrome.runtime.Manifest) => string | undefined;
export interface WebStoreState {
    session: Electron.Session;
    extensionsPath: string;
    installing: Set<ExtensionId>;
    allowlist?: Set<ExtensionId>;
    denylist?: Set<ExtensionId>;
    minimumManifestVersion: number;
    beforeInstall?: BeforeInstall;
    afterInstall?: AfterInstall;
    afterUninstall?: AfterUninstall;
    setExtensionEnabled?: SetExtensionEnabled;
    getExtensionInstallStatus?: GetExtensionInstallStatus;
    getAllExtensions?: () => Promise<ChromeWebStoreExtensionInfo[]>;
}
interface ChromeWebStoreExtensionIcon {
    size: number;
    url: string;
}
export interface ChromeWebStoreExtensionInfo {
    id: string;
    name: string;
    shortName: string;
    description: string;
    version: string;
    versionName?: string;
    type: 'extension';
    enabled: boolean;
    disabledReason?: 'unknown' | 'permissions_increase' | (string & {});
    installType: 'normal' | 'sideload' | 'development';
    isApp: boolean;
    offlineEnabled: boolean;
    mayDisable: boolean;
    mayEnable?: boolean;
    permissions: string[];
    hostPermissions: string[];
    homepageUrl: string;
    optionsUrl: string;
    updateUrl?: string;
    icons: ChromeWebStoreExtensionIcon[];
}
export {};
