import type { RegisterMetaInfoInternal, StorefrontProvider, UpdateButtonConfigRequest } from '../../../client-api/src/shapes';
import { showWhenReady } from './visibility';
import type { StorefrontAllowedWindowOptions } from '../shapes/shapes';
/**
 * Response from {@link register} which includes workspace metadata and a helper to update app card buttons.
 */
export type StorefrontRegistration = RegisterMetaInfoInternal & {
    /** Client SDK version active at registration time. */
    clientAPIVersion: string;
    /**
     * Updates primary and secondary button configuration for an app card in the Storefront VPW UI.
     *
     * @param request App id and button configs to apply.
     */
    updateAppCardButtons: (request: UpdateButtonConfigRequest) => Promise<void>;
};
/**
 * Options for {@link register}.
 */
export type StorefrontRegisterOptions = {
    /** Window creation options applied when launching the browser-zone Storefront VPW window. */
    windowOptions?: StorefrontAllowedWindowOptions;
};
/**
 * Registers a Storefront VPW integrator.
 *
 * Creates the VPW channel (if needed), launches the browser-zone Storefront window hidden,
 * then adds the provider to the in-process registry.
 *
 * @remarks Call from the **provider process** (the platform/provider window), not from
 * arbitrary content views. The channel and host singleton are bound to the caller's
 * `fin.me.identity` — same constraint as legacy `Storefront.register()`.
 *
 * @throws Error if `provider.icon` is missing.
 * @throws {@link StorefrontVpwProviderAlreadyRegisteredError} if a provider with the same id is already registered.
 *
 * @param provider Storefront integrator implementation.
 * @param options Optional launch options for the VPW window.
 * @returns Registration metadata and an `updateAppCardButtons` helper.
 *
 * @example
 * ```ts
 * import { Storefront, type StorefrontProvider } from '@openfin/workspace-platform';
 *
 * const provider: StorefrontProvider = {
 *     id: 'my-store',
 *     title: 'My Store',
 *     icon: 'https://example.com/icon.png',
 *     getApps: async () => [],
 *     getNavigation: async () => [],
 *     getLandingPage: async () => undefined,
 *     getFooter: async () => ({ logo: { src: '' } }),
 *     launchApp: async () => undefined
 * };
 *
 * await Storefront.register(provider);
 * await Storefront.show();
 * ```
 */
export declare const register: (provider: StorefrontProvider, options?: StorefrontRegisterOptions) => Promise<StorefrontRegistration>;
/**
 * Deregisters a Storefront VPW integrator by id.
 *
 * Removes the provider from the in-process registry. Shuts down the VPW channel and window
 * when no providers remain registered.
 *
 * @remarks Call from the **provider process**, matching {@link register}.
 *
 * @param providerId Id of the provider to remove.
 *
 * @example
 * ```ts
 * import { Storefront } from '@openfin/workspace-platform';
 *
 * await Storefront.deregister('my-store');
 * ```
 */
export declare const deregister: (providerId: string) => Promise<void>;
export { showWhenReady };
