import { Address } from "@project-serum/anchor";
import { VersionedTransaction } from "@solana/web3.js";
import { AddLiquidityQuote, AddLiquidityQuoteParams, AddLiquidityTransactionPayload, AirdropInfo, CloseLpPositionTransactionPayload, CloseMarginAccountTransactionPayload, ClosePositionQuote, ClosePositionQuoteParams, ClosePositionQuotePayload, ClosePositionTransactionPayload, CreateMarginAccountTransactionPayload, DepositMarginTransactionPayload, EpochPeriod, FormattedStakingBalanceResponse, GetLiquidationHistoryParams, GetLiquidationHistoryParamsV2, GetLpHistoryParams, GetLpHistoryParamsV2, GetMarginTransferHistoryParams, GetMarginTransferHistoryParamsV2, GetTradeHistoryParams, GetTradeHistoryParamsV2, LiquidationEventV2, LiquidationHistory, LiquidationSnapshot, LpAccountInfo, LpAccountParams, LpPositionInfo, LpPositionParams, LpPositionsInfo, LpPositionsParams, MarginAccountId, MarginAccountInfo, MarginAccountParams, MarginAccountsInfo, MarginAccountsParams, MarginTransferEvent, ModifyLiquidityEvent, ModifyPositionQuote, ModifyPositionQuoteParams, ModifyPositionQuotePayload, ModifyPositionTransactionPayload, PositionModificationLimitsQuote, PositionModificationLimitsQuoteParams, PositionModificationLimitsQuotePayload, RemoveLiquidityQuote, RemoveLiquidityQuoteParams, RemoveLiquidityTransactionPayload, SettlementRequestInfo, StakingAddresses, TradeEvent, TradeEventV2, TransactionHistory, TransactionHistoryV2, TransferEvent, UpgradeLpAccountTransactionPayload, UserCommunicationMethods, UserCommunicationMethodsUpdate, UserConfig, UserMarginAccountIds, UserMarginAccountIdsUpdate, UserSettings, UserSettingsUpdate, WithdrawMarginQuote, WithdrawMarginQuoteParams, WithdrawMarginTransactionPayload } from "./types";
export declare class User {
    private _baseUrl;
    user?: Address;
    private headers;
    private client;
    private expressClient;
    constructor({ baseUrl, user, accessToken, env }: UserConfig);
    setUser(user: Address): void;
    get baseUrl(): string;
    isHighRisk(refresh?: boolean): Promise<boolean>;
    getSolBalance(refresh?: boolean): Promise<string>;
    getCollateralBalance(refresh?: boolean): Promise<string>;
    getPrclBalance(refresh?: boolean): Promise<string>;
    getMarginAccount(params: MarginAccountParams): Promise<MarginAccountInfo>;
    getMarginAccounts(params?: MarginAccountsParams): Promise<MarginAccountsInfo>;
    getLpAccount(params?: LpAccountParams): Promise<LpAccountInfo>;
    getLpPosition(params: LpPositionParams): Promise<LpPositionInfo>;
    getLpPositions(params?: LpPositionsParams): Promise<LpPositionsInfo>;
    getSettlementRequests(): Promise<SettlementRequestInfo[]>;
    getUpgradeLpAccount(payload?: UpgradeLpAccountTransactionPayload): Promise<VersionedTransaction>;
    getAddLiquidityTransaction(payload: AddLiquidityTransactionPayload): Promise<VersionedTransaction>;
    getRemoveLiquidityTransaction(payload: RemoveLiquidityTransactionPayload): Promise<VersionedTransaction>;
    getCloseLpPositionTransaction(payload: CloseLpPositionTransactionPayload): Promise<VersionedTransaction>;
    getCreateMarginAccountTransaction(payload?: CreateMarginAccountTransactionPayload): Promise<{
        marginAccountId: MarginAccountId;
        tx: VersionedTransaction;
    }>;
    getDepositMarginTransaction(payload: DepositMarginTransactionPayload): Promise<VersionedTransaction>;
    getWithdrawMarginTransaction(payload: WithdrawMarginTransactionPayload): Promise<VersionedTransaction>;
    getModifyPositionTransaction(payload: ModifyPositionTransactionPayload): Promise<VersionedTransaction>;
    getClosePositionTransaction(payload: ClosePositionTransactionPayload): Promise<VersionedTransaction>;
    getCloseMarginAccountTransaction(payload: CloseMarginAccountTransactionPayload): Promise<VersionedTransaction>;
    getProcessSettlementRequestsTransactions(): Promise<VersionedTransaction[]>;
    getAddLiquidityQuote(params: AddLiquidityQuoteParams): Promise<AddLiquidityQuote>;
    getRemoveLiquidityQuote(params: RemoveLiquidityQuoteParams): Promise<RemoveLiquidityQuote>;
    getWithdrawMarginQuote(params: WithdrawMarginQuoteParams): Promise<WithdrawMarginQuote>;
    getModifyPositionQuote(payload: ModifyPositionQuotePayload, params?: ModifyPositionQuoteParams): Promise<ModifyPositionQuote>;
    getClosePositionQuote(payload: ClosePositionQuotePayload, params?: ClosePositionQuoteParams): Promise<ClosePositionQuote>;
    getPositionModificationLimitsQuote(payload: PositionModificationLimitsQuotePayload, params?: PositionModificationLimitsQuoteParams): Promise<PositionModificationLimitsQuote>;
    updateProfileSettings(settingsUpdate: UserSettingsUpdate, accessToken?: string): Promise<UserSettings>;
    getProfileSettings(refresh?: boolean, accessToken?: string): Promise<UserSettings>;
    getProfileCommunicationMethods(refresh?: boolean, accessToken?: string): Promise<UserCommunicationMethods>;
    updateProfileCommunicationMethods(communicationMethodsUpdate: UserCommunicationMethodsUpdate, accessToken?: string): Promise<UserCommunicationMethods>;
    getMarginAccountIds(refresh?: boolean, accessToken?: string): Promise<UserMarginAccountIds>;
    updateMarginAccountIds(marginAccountIdsUpdate: UserMarginAccountIdsUpdate, accessToken?: string): Promise<UserMarginAccountIds>;
    removeMarginAccountId(marginAccountId: MarginAccountId, accessToken?: string): Promise<UserMarginAccountIds>;
    getLiquidationHistory(params?: GetLiquidationHistoryParams, accessToken?: string): Promise<LiquidationHistory>;
    getTradeHistory(params: GetTradeHistoryParams, accessToken?: string): Promise<TransactionHistory<TradeEvent>>;
    getLpHistory(params: GetLpHistoryParams, accessToken?: string): Promise<TransactionHistory<ModifyLiquidityEvent>>;
    getMarginTransferHistory(params: GetMarginTransferHistoryParams, accessToken?: string): Promise<TransactionHistory<MarginTransferEvent>>;
    isOnboarded(accessToken?: string): Promise<boolean>;
    onboard(accessToken?: string): Promise<boolean>;
    getAirdropEventSummary(accessToken?: string): Promise<AirdropInfo>;
    getStakingAddresses(): Promise<StakingAddresses>;
    getStakingBalance(): Promise<FormattedStakingBalanceResponse>;
    getStakingCurrentEpochPeriod(): Promise<EpochPeriod>;
    getStakingLockedEpochPeriod(unlockingEpoch: number): Promise<EpochPeriod>;
    getStakingLockedEpochPeriodEstimate({ addOneEpoch, }: {
        addOneEpoch: boolean;
    }): Promise<EpochPeriod>;
    getCreateStakingAccountTransactions(): Promise<VersionedTransaction[]>;
    getStakeTransactions(stakingAmount: number, createAccount?: boolean): Promise<VersionedTransaction[]>;
    getUnStakeTransactions(stakingAmount: number): Promise<VersionedTransaction[]>;
    getStakingWithdrawTransactions(stakingAmount: number): Promise<VersionedTransaction[]>;
    getHistoricalPortfolio({ userAddress, }: {
        userAddress: Address;
    }): Promise<HistoricalPortfolioResponse>;
    getLiquidationHistoryV2(params?: GetLiquidationHistoryParamsV2): Promise<TransactionHistoryV2<LiquidationEventV2>>;
    getTradeHistoryV2(params: GetTradeHistoryParamsV2): Promise<TransactionHistoryV2<TradeEventV2>>;
    getLpHistoryV2(params: GetLpHistoryParamsV2): Promise<TransactionHistoryV2<ModifyLiquidityEvent>>;
    getMarginTransferHistoryV2(params: GetMarginTransferHistoryParamsV2): Promise<TransactionHistoryV2<MarginTransferEvent>>;
    getHoaImage({ user }: {
        user: string;
    }): Promise<string>;
}
export type HistoricalPortfolioResponse = {
    rollup: PortfolioPnlSnapshot[];
    portfolioPnlByDate: Record<string, PortfolioPnlSnapshot[]>;
    liquidationsByDateByAccount: Record<string, LiquidationSnapshot[]>;
    marginTransfersByDateByAccount: Record<string, TransferEvent[]>;
};
export type NetInvestmentEpoch = {
    date: string;
    totalPnl: number;
    netInvested: number;
    portfolioValue: number;
};
export type LiquidationEvent = {
    date: string;
    owner: string;
    totalLiquidatedMargin: number;
    marginAccountId: string;
    signature: string;
};
export type PortfolioPnlSnapshot = {
    date: string;
    portfolioValue: number;
    netInvested: number;
    totalPnl: number;
};
//# sourceMappingURL=user.d.ts.map