import type { CreateItemInput, CreateListInput, DeleteItemsInput, IdentifyProfileInput, ItemControllerFindData, ListControllerFindData, SetListItemsOrderInput, UpdateItemInput, UpdateListInput } from "@swishapp/api-client";
import type { LoadProductOptionsArgs, LoadProductOptionsResponse, LoadSelectedVariantArgs } from "./storefront-api";
import type { SwishAppOptions } from "./types";
import { LoadSelectedVariantResponse } from "./storefront-api/loadSelectedVariant";
export declare const swishApp: (options: SwishAppOptions) => Promise<SwishApp>;
export declare class SwishApp {
    private readonly worker;
    private readonly rpc;
    private readonly options;
    private initPromise?;
    constructor(options: SwishAppOptions);
    init(): Promise<void>;
    private _init;
    private storeProfile;
    private deleteProfile;
    readonly api: {
        items: {
            list: (query?: ItemControllerFindData["query"]) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").Item[]>>;
            create: (body: CreateItemInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").Item>>;
            delete: (body: DeleteItemsInput) => Promise<import("@swishapp/api-client").ApiResponse<unknown>>;
            findById: (id: string) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").ItemDetail>>;
            updateById: (id: string, body: UpdateItemInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").Item>>;
            deleteById: (id: string) => Promise<void>;
        };
        lists: {
            list: () => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List[]>>;
            findById: (id: string, query?: ListControllerFindData["query"]) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").ListDetail>>;
            create: (body: CreateListInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List>>;
            updateById: (id: string, body: UpdateListInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List>>;
            deleteById: (id: string) => Promise<import("@swishapp/api-client").ApiResponse<unknown>>;
            orderItems: (id: string, body: SetListItemsOrderInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List>>;
        };
        profiles: {
            customerAccountsVersion: () => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").AccountsVersionResult>>;
            identify: (body: IdentifyProfileInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").IdentifyProfileResult>>;
        };
    };
    readonly storefront: {
        loadProductOptions: (args: LoadProductOptionsArgs) => Promise<LoadProductOptionsResponse>;
        loadSelectedVariant: (args: LoadSelectedVariantArgs) => Promise<LoadSelectedVariantResponse>;
    };
    readonly ui: {
        showSignIn: (options?: {
            returnTo?: string;
        }) => Promise<void>;
        showVariantSelect: <TData = unknown>(options: {
            productId?: string;
            productHandle?: string;
            variantId?: string;
            displayType?: "rows" | "pills";
            onSubmit: (data: TData) => void | Promise<void>;
        }) => Promise<void>;
        initShopBridge: ({ onShopModalOpen, }: {
            onShopModalOpen: () => void;
        }) => Promise<import(".").ShopBridge>;
        showNotification: (options: {
            title?: string;
            text: string;
            image?: string;
            action?: {
                label: string;
                url?: string;
                onAction?: () => void;
            };
        }) => Promise<void>;
    };
}
