import { Pool } from "../spot/types";
import { BigNumberable } from "../types";
import { Address, ID } from "../types";
export type AuqadityContracts = {
    BasePackage: Address;
    CurrentPackage: Address;
    UpgradeCap: Address;
    AdminCap: Address;
    ProtocolConfig: Address;
    VaultStore: Address;
    Operators: {
        [key: string]: Address;
    };
    Vaults?: Array<Vault>;
};
export type Vault = {
    id: ID;
    manager: Address;
    name: string;
    index: string;
    type: number;
    users?: Array<Address>;
    sequence_number?: string;
};
export type Reserves = {
    id: ID;
    coinType: string;
    value: number;
};
export type CreateVaultArgs = {
    name: string;
    type?: number;
    manager?: Address;
    users?: Array<Address>;
};
export type FundVaultArgs = {
    vault: ID;
    coinType: string;
    amount: BigNumberable;
};
export type WithdrawFundArgs = {
    vault: ID;
    coinType: string;
    amount: BigNumberable;
};
export type UpdateUsersArgs = {
    vault: ID;
    add: boolean;
    users: Array<Address>;
};
export type OpenPositionArgs = {
    vault: ID;
    pool: Pool;
    lowerTickBits: number;
    upperTickBits: number;
};
export type ProvideLiquidityArgs = {
    vault: ID;
    pool: Pool;
    position: ID;
    amount: BigNumberable;
    coinAMax: BigNumberable;
    coinBMax: BigNumberable;
    isFixedA: boolean;
};
export type RemoveLiquidityArgs = {
    vault: ID;
    pool: Pool;
    position: ID;
    liquidity: BigNumberable;
    coinAMin: BigNumberable;
    coinBMin: BigNumberable;
};
export type CollectFeeArgs = {
    vault: ID;
    pool: Pool;
    position: ID;
    destination: Address;
};
export type CollectRewardArgs = {
    vault: ID;
    pool: Pool;
    position: ID;
    rewardCoinType: string;
    destination: Address;
};
export type ClosePositionArgs = {
    vault: ID;
    pool: Pool;
    position: ID;
    destination: Address;
};
