import { FC, ReactNode } from 'react';
import { BigNumber } from '@polymathnetwork/polymesh-sdk';
import { TransactionStatus, TransactionQueue } from '@polymathnetwork/polymesh-sdk/types';
import { EventRecord } from '@polkadot/types/interfaces';
import { AugmentedSubmittable } from '@polkadot/api/types/submittable';
import { SubmittableExtrinsic } from '@polkadot/api/submittable/types';
export declare enum AppStaticRoute {
    splashscreen = "/",
    extension = "/extension",
    wrongNetwork = "/wrong-network",
    uIdMissing = "/uid-missing"
}
export interface StaticRoutes {
    [path: string]: FC<any>;
}
export declare type AppBaseReduxConfig = {
    appStateActions: {
        setSdk: any;
        setSelectedAccount: any;
        setDid: any;
        setHasUid: any;
        setIsITN: any;
        setPolyWallet: any;
        setChainProperties: any;
        setInFlight: any;
        [key: string]: any;
    };
    provider: any;
    store: any;
};
export interface ApiConfig {
    polyWssNodeUrl: string;
    graphqlEndpoint: string;
    graphqlApiKey: string;
    masqueradeEnv: string;
    isProdEnv: boolean;
    rpcUrl: string;
    LoadingScreen?: FC<any>;
}
export interface ConfirmationData {
    title: string;
    titleArgs?: Record<string, string | number>;
    identity?: boolean;
    sections?: {
        label?: string;
        items: {
            label: string;
            value: string | ReactNode | null;
            link?: string;
            hr?: boolean;
            translate?: boolean;
        }[];
    }[];
    headerComponent?: ReactNode;
    footerComponent?: ReactNode;
    message?: string;
    messageArgs?: Record<string, string | number>;
    submitButtonTitle?: string;
    apiProtocolFee?: BigNumber;
}
export declare enum ConfirmationStatus {
    None = 0,
    Pending = 1,
    Done = 2
}
export declare enum TxQueueStatus {
    None = "None",
    Running = "Running",
    Succeeded = "Succeeded",
    Failed = "Failed",
    Partial = "Partial"
}
export declare enum ApiQueueItemType {
    Batch = 0,
    Single = 1
}
export declare type PolymeshTx<Args extends unknown[]> = AugmentedSubmittable<(...args: Args) => SubmittableExtrinsic<'promise'>>;
export interface ApiQueueItem<Args extends unknown[]> {
    method: PolymeshTx<Args>;
    params: Args;
    blocking?: boolean;
    txHash?: string;
    status?: TransactionStatus;
    dataResolver?: (events: EventRecord[]) => Record<string, any>;
    type?: ApiQueueItemType;
}
export interface SigningPackage {
    id: string;
    queue?: TransactionQueue;
    apiQueue?: ApiQueueItem<any>[];
    confirmationData?: ConfirmationData;
    confirmationStatus?: ConfirmationStatus;
    onCompleted?: (result: TxQueueStatus, transactions: any) => void;
    onDismissed?: () => void;
    failUrl?: string;
}
//# sourceMappingURL=definition.d.ts.map