import { Polymesh } from '@polymathnetwork/polymesh-sdk';
import { AccountBalance, Identity, Permissions } from '@polymathnetwork/polymesh-sdk/types';
import { PayloadAction } from '@reduxjs/toolkit';
export declare type PolymeshState = {
    sdk: Polymesh | null;
    wallet: any;
    currentAccount?: string;
    currentIdentity?: Identity;
    isDidValid?: boolean;
    didIssuer?: Identity;
    didExpiry?: Date | null;
    hasUid?: boolean;
    permissions?: Permissions | any;
    inFlight?: boolean;
    chainProperties?: any;
    accountBalance?: AccountBalance;
};
export declare const polymeshSlice: import("@reduxjs/toolkit").Slice<PolymeshState, {
    setSdk(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<any>): void;
    setWallet(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<any>): void;
    setCurrentAccount(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<string>): void;
    setHasUid(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<boolean>): void;
    setCurrentIdentity(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Identity>): void;
    setIsDidValid(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<boolean>): void;
    setDidIssuer(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Identity>): void;
    setDidExpiry(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Date | null | undefined>): void;
    setPermissions(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Permissions | any>): void;
    setIsItn(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<boolean>): void;
    setChainProperties(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<any>): void;
    setAccountBalance(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<AccountBalance>): void;
}, "polymesh">;
export declare const polymeshReducer: import("redux").Reducer<PolymeshState, import("redux").AnyAction>;
export declare const polymeshActions: import("@reduxjs/toolkit").CaseReducerActions<{
    setSdk(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<any>): void;
    setWallet(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<any>): void;
    setCurrentAccount(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<string>): void;
    setHasUid(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<boolean>): void;
    setCurrentIdentity(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Identity>): void;
    setIsDidValid(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<boolean>): void;
    setDidIssuer(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Identity>): void;
    setDidExpiry(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Date | null | undefined>): void;
    setPermissions(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<Permissions | any>): void;
    setIsItn(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<boolean>): void;
    setChainProperties(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<any>): void;
    setAccountBalance(state: import("immer/dist/internal").WritableDraft<PolymeshState>, action: PayloadAction<AccountBalance>): void;
}>;
/**
 * Factory function to return state selectors from provided polymesh selector
 * @param polymeshSelector selector function for polymesh state
 */
export declare function getPolymeshStateSelectors<RootState>(polymeshSelector: (rootState: RootState) => PolymeshState): {
    polymeshSelector: (rootState: RootState) => PolymeshState;
    walletSelector: import("reselect").OutputSelector<RootState, any, (res: PolymeshState) => any>;
    sdkSelector: import("reselect").OutputSelector<RootState, Polymesh, (res: PolymeshState) => Polymesh>;
    currentAccountSelector: import("reselect").OutputSelector<RootState, string | undefined, (res: PolymeshState) => string | undefined>;
    currentIdentitySelector: import("reselect").OutputSelector<RootState, import("@polymathnetwork/polymesh-sdk/internal").Identity | undefined, (res: PolymeshState) => import("@polymathnetwork/polymesh-sdk/internal").Identity | undefined>;
    isDidValidSelector: import("reselect").OutputSelector<RootState, boolean | undefined, (res: PolymeshState) => boolean | undefined>;
    didIssuerSelector: import("reselect").OutputSelector<RootState, import("@polymathnetwork/polymesh-sdk/internal").Identity | undefined, (res: PolymeshState) => import("@polymathnetwork/polymesh-sdk/internal").Identity | undefined>;
    didExpirySelector: import("reselect").OutputSelector<RootState, Date | null | undefined, (res: PolymeshState) => Date | null | undefined>;
    hasUidSelector: import("reselect").OutputSelector<RootState, boolean | undefined, (res: PolymeshState) => boolean | undefined>;
    permissionsSelector: import("reselect").OutputSelector<RootState, any, (res: PolymeshState) => any>;
    inFlightSelector: import("reselect").OutputSelector<RootState, boolean | undefined, (res: PolymeshState) => boolean | undefined>;
    chainPropertiesSelector: import("reselect").OutputSelector<RootState, any, (res: PolymeshState) => any>;
    accountBalanceSelector: import("reselect").OutputSelector<RootState, import("@polymathnetwork/polymesh-sdk/types").Balance | undefined, (res: PolymeshState) => import("@polymathnetwork/polymesh-sdk/types").Balance | undefined>;
    availableBalanceSelector: import("reselect").OutputSelector<RootState, import("bignumber.js").default | undefined, (res: import("@polymathnetwork/polymesh-sdk/types").Balance | undefined) => import("bignumber.js").default | undefined>;
};
//# sourceMappingURL=polymesh.d.ts.map