import type { OpenFin } from '@openfin/core';
type ChannelActionMap = {
    [action: string]: (...args: any[]) => any;
};
type TypedChannelClient<ProviderActions extends ChannelActionMap, ClientActions extends ChannelActionMap> = Omit<OpenFin.ChannelClient, 'dispatch' | 'register'> & {
    dispatch: <T extends keyof ProviderActions>(action: T, payload: Parameters<ProviderActions[T]>[0]) => Promise<Awaited<ReturnType<ProviderActions[T]>>>;
    register: <T extends keyof ClientActions>(action: T, handler: (payload: Parameters<ClientActions[T]>[0], id: OpenFin.ProviderIdentity | OpenFin.ClientIdentity) => Promise<Awaited<ReturnType<ClientActions[T]>>>) => boolean;
};
type TypedChannelProvider<ProviderActions extends ChannelActionMap, ClientActions extends ChannelActionMap> = Omit<OpenFin.ChannelProvider, 'dispatch' | 'register'> & {
    dispatch: <T extends keyof ClientActions>(to: OpenFin.ClientIdentity, action: T, payload: Parameters<ClientActions[T]>[0]) => Promise<Awaited<ReturnType<ClientActions[T]>>>;
    register: <T extends keyof ProviderActions>(action: T, handler: (payload: Parameters<ProviderActions[T]>[0], id: OpenFin.ProviderIdentity | OpenFin.ClientIdentity) => Promise<Awaited<ReturnType<ProviderActions[T]>>>) => boolean;
};
export type UpdateAppCardButtonConfigPayload = {
    id: string;
    appId: string;
    primaryButton?: unknown;
    secondaryButtons?: unknown[];
};
export type StorefrontVpwProviderListItem = {
    id: string;
    title: string;
    icon: string;
    identity: OpenFin.Identity;
    buttonVisibility?: 'hidden' | 'visible';
    cardClickBehavior?: 'show-app-details' | 'perform-primary-button-action';
};
export type StorefrontVpwChannelProvider = TypedChannelProvider<StorefrontVpwChannelProviderChannelActions, StorefrontVpwChannelClientChannelActions>;
export type StorefrontVpwChannelClient = TypedChannelClient<StorefrontVpwChannelProviderChannelActions, StorefrontVpwChannelClientChannelActions>;
export {};
