import { FC, ReactNode } from 'react';
import { BigNumber, Polymesh } from '@polymathnetwork/polymesh-sdk';
import { TransactionStatus, TransactionQueue, Identity, Permissions, AccountBalance } 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 {
    extension = "/extension",
    wrongNetwork = "/wrong-network",
    uIdMissing = "/uid-missing"
}
export declare type AppBaseReduxConfig = {
    provider: any;
    store: any;
};
export interface StaticRoutes {
    [path: string]: FC<any>;
}
export interface ApiActions {
    setSdk: (sdk: Polymesh) => any;
    setPolyWallet: (polyWallet: any) => any;
    setCurrentAccount: (account: string) => any;
    setCurrentIdentity: (identity: Identity) => any;
    setIsDidValid: (isDidValid: boolean) => any;
    setDidIssuer: (identity: Identity) => any;
    setDidExpiry: (expiry?: Date | null) => any;
    setHasUid: (hasUid: boolean) => any;
    setPermissions: (permissions: Permissions) => any;
    setInFlight: (inFlight: boolean) => any;
    setChainProperties: (chainProperties: any) => any;
    setAccountBalance: (balance: AccountBalance) => any;
}
export interface ApiConfig {
    polyWssNodeUrl: string;
    graphqlEndpoint: string;
    graphqlApiKey: string;
    masqueradeEnv: string;
    isProdEnv: boolean;
    rpcUrl: string;
    ss58FormatOverride?: number | string;
    LoadingScreen?: FC<any>;
}
export interface DetailItem {
    label: string;
    value: string | ReactNode | null;
    link?: string;
    hr?: boolean;
    translate?: boolean;
}
export interface Section {
    label?: string;
    items: DetailItem[];
}
export interface ConfirmationData {
    title: string;
    titleArgs?: Record<string, string | number>;
    message?: string;
    messageArgs?: Record<string, string | number>;
    body?: ReactNode;
    sections?: Section[];
    footer?: ReactNode;
    submitButtonTitle?: string;
    apiProtocolFee?: BigNumber;
}
export declare enum ConfirmationStatus {
    None = 0,
    Pending = 1,
    Done = 2
}
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?: () => void;
    onDismissed?: () => void;
    failUrl?: string;
}
export declare enum TranslationNS {
    General = "General",
    ExtensionPage = "ExtensionPage",
    WrongNetworkPage = "WrongNetworkPage",
    UidMissingPage = "UidMissingPage",
    QueueModal = "QueueModal",
    ConfirmModal = "ConfirmModal"
}
export declare enum TranslationLang {
    En = "en"
}
export declare type TranslationData = {
    [TranslationLang.En]: any;
    [lang: string]: any;
};
export declare type TranslationWithNS = {
    namespace: string;
    data: TranslationData;
};
//# sourceMappingURL=definition.d.ts.map