/// <reference types="lodash" />
import { AxiosRequestConfig } from 'axios';
import { Asset, ConfigJSON, ToastReason } from '@showpad/experience-app-types';
/**
 * Promise that resolves once the ShowpadLib has been loaded and ready to use.
 * It's recommended to use this function before using any SDK method.
 *
 * @category Offline
 */
export declare const onShowpadLibLoaded: () => Promise<void>;
/**
 * @param T Generic to completely type your config.json structure.
 *          Use Label / Content in your interface to get maximum type support.
 *
 * @returns the computed config.json from the experience app editor.
 *
 * @category Offline
 */
export declare const parseConfig: (<T extends ConfigJSON = ConfigJSON>() => Promise<T>) & import("lodash").MemoizedFunction;
/**
 * Programmatically invoke Showpad urls (https://help.showpad.com/hc/en-us/articles/211957029-Showpad-URL-scheme-requirements).
 *
 * @category Offline
 */
export declare const openShowpadUrl: (showpadUrl: string) => void;
/**
 * Programmatically open the asset viewer with the passed asset.
 *
 * @category Offline
 */
export declare const openAssetViewer: (assetSlug: Asset['slug'], options?: {
    page?: number;
    modal?: boolean;
}) => void;
/**
 * @category Offline
 */
export declare const handleErrorWithToast: (error: unknown) => Promise<ToastReason>;
/**
 * @category Online
 */
export declare const requestOnShowpadInstance: (config: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
/**
 * @remarks Asset files are cached for 10 minutes. Can be busted by adding a timestamp to the request URL. For example `${your url}?ts=${Date.now()}`
 *
 * @param size The maximum dimension for the width or height.
 *
 * @returns Raw asset preview (blob).
 *
 * @category Offline
 */
export declare const getAssetPreview: (assetId: Asset['id'], assetSlug: Asset['slug'], size: number) => Promise<Blob>;
/**
 * @remarks Asset files are cached for 10 minutes. Can be busted by adding a timestamp to the request URL. For example `${your url}?ts=${Date.now()}`
 *
 * @returns Raw asset file (blob).
 *
 * @category Offline
 */
export declare const getAssetFile: (assetId: Asset['id'], assetSlug: Asset['slug']) => Promise<Blob>;
