/// <reference types="react" />
import { BigNumber } from '@ethersproject/bignumber';
import { ChainId, Token, TokenAmount } from '@envanik/sdk';
import { Position, URI } from './types';
/**
 *
 * @returns Returns the defaults functions used for all sar stake hooks
 */
export declare function useDefaultSarStake(): {
    account: string | null | undefined;
    approval: import("../..").TransactionApprovalState;
    approveCallback: () => Promise<void>;
    chainId: ChainId;
    png: Token;
    attempting: boolean;
    setAttempting: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    hash: string | null;
    setHash: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    typedValue: string;
    stepIndex: number;
    setStepIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
    stakeError: string | null;
    setStakeError: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    sarStakingContract: import("@ethersproject/contracts").Contract | null;
    addTransaction: (response: {
        hash: string;
    }, customData?: {
        summary?: string | undefined;
        approval?: {
            tokenAddress: string;
            spender: string;
        } | undefined;
        claim?: {
            recipient: string;
        } | undefined;
    } | undefined) => void;
    t: import("i18next").TFunction;
    dollerWorth: number | undefined;
    wrappedOnDismiss: () => void;
    mixpanel: {
        track: (event: import("src/hooks/mixpanel").MixPanelEvents, properties: {
            [x: string]: any;
        }) => void;
    };
    parsedAmount: import("@envanik/sdk").CurrencyAmount | undefined;
    error: string | undefined;
    handleMax: () => void;
    onChangePercentage: (value: number) => void;
    onUserInput: (_typedValue: string) => void;
};
/**
 * Format the onchain data for all useSarPositions hooks
 * @param nftsURIs Array of the nft URI
 * @param nftsIndexes Array of array of the nft id `[[0x1], [0x2], [0x3]...]`
 * @param valuesVariables The array of call values variables of each position
 * @param rewardRates The array with reward rate of each position
 * @param pendingsRewards The array with pending rewards amount of each position
 * @param lastUpdates The array with last update time of each position
 * @param blockTimestamp The timestamp of the last block
 * @param chainId Chain id
 * @returns Returns the Array of Positions
 */
export declare function formatPosition(args: {
    nftsURIs: (URI | undefined)[];
    nftsIndexes: string[][];
    valuesVariables: {
        balance: BigNumber;
        sumOfEntryTimes: BigNumber;
    }[];
    rewardRates: BigNumber[];
    pendingsRewards: BigNumber[];
    lastUpdates: BigNumber[];
    blockTimestamp: number;
    chainId: ChainId;
}): Position[];
export declare function useUnstakeParseAmount(typedValue: string, stakingToken: Token, userLiquidityStaked?: TokenAmount): {
    parsedAmount: import("@envanik/sdk").CurrencyAmount | undefined;
    error: string | undefined;
};
/**
 *
 * @param position The position
 * @returns  Returns the defaults functions used for all sar unstake hooks
 */
export declare function useDefaultSarUnstake(position: Position | null): {
    typedValue: string;
    stepIndex: number;
    chainId: ChainId;
    setStepIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
    unstakeError: string | null;
    setUnstakeError: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    attempting: boolean;
    setAttempting: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    hash: string | null;
    setHash: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    account: string | null | undefined;
    t: import("i18next").TFunction;
    addTransaction: (response: {
        hash: string;
    }, customData?: {
        summary?: string | undefined;
        approval?: {
            tokenAddress: string;
            spender: string;
        } | undefined;
        claim?: {
            recipient: string;
        } | undefined;
    } | undefined) => void;
    png: Token;
    sarStakingContract: import("@ethersproject/contracts").Contract | null;
    parsedAmount: import("@envanik/sdk").CurrencyAmount | undefined;
    error: string | undefined;
    wrappedOnDismiss: () => void;
    onUserInput: (_typedValue: string) => void;
    handleMax: () => void;
    onChangePercentage: (value: number) => void;
};
/**
 *
 * @returns Returns the defaults functions used for all sar claim and compound hooks
 */
export declare function useDefaultSarClaimOrCompound(): {
    attempting: boolean;
    setAttempting: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    hash: string | null;
    setHash: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    functionError: string | null;
    setFunctionError: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    account: string | null | undefined;
    sarStakingContract: import("@ethersproject/contracts").Contract | null;
    t: import("i18next").TFunction;
    addTransaction: (response: {
        hash: string;
    }, customData?: {
        summary?: string | undefined;
        approval?: {
            tokenAddress: string;
            spender: string;
        } | undefined;
        claim?: {
            recipient: string;
        } | undefined;
    } | undefined) => void;
    wrappedOnDismiss: () => void;
};
/**
 * This function replicate the on chain code to create the nft image, some chains need to do this
 *
 * source code: https://github.com/envanik/exchange-contracts/blob/1433538839858c4ab222bed1691e90861d90b46b/contracts/staking-positions/TokenMetadata.sol#L89-L162
 * @param balance Amount of PNG/PSB/PFL/PBAR... staked in this position
 * @param sumOfEntryTimes This is provide by the smart contract
 * @param apr The position apr
 * @param pendingRewards Amount of rewards to claim in position
 * @param blockTimestamp The last block timestamp in seconds
 * @param chainId Chain id
 * @returns the nft URI similar to on chain
 */
export declare function createURI(balance: BigNumber, sumOfEntryTimes: BigNumber, apr: BigNumber, pendingRewards: BigNumber, positionId: string, blockTimestamp: number, chainId: ChainId): URI;
