import { CallOverrides } from "@ethersproject/contracts";
import { ChainId } from "../../chain";
import { ContractAddressId, ContractService, WrappedContract } from "../../common";
import { Address, Position, VaultDynamic, VaultStatic } from "../../types";
export interface RegistryAdapter {
    assetsStatic(addresses?: Address[], overrides?: CallOverrides): Promise<VaultStatic[]>;
    assetsDynamic(addresses?: Address[], overrides?: CallOverrides): Promise<VaultDynamic[]>;
    positionsOf(address: Address, addresses?: Address[], overrides?: CallOverrides): Promise<Position[]>;
    tokens(overrides?: CallOverrides): Promise<Address[]>;
}
export declare class RegistryV2Adapter<T extends ChainId> extends ContractService<T> implements RegistryAdapter {
    static abi: string[];
    static contractId: ContractAddressId;
    get contract(): Promise<WrappedContract>;
    /**
     * Get the static part of Vault assets.
     * @param addresses filter, if not provided all assets are returned
     * @param overrides
     * @returns static
     */
    assetsStatic(addresses?: Address[], overrides?: CallOverrides): Promise<VaultStatic[]>;
    /**
     * Get the dynamic part of Vault assets.
     * @param addresses filter, if not provided all assets are returned
     * @param overrides
     * @returns dynamic
     */
    assetsDynamic(addresses?: Address[], overrides?: CallOverrides): Promise<VaultDynamic[]>;
    /**
     * Get all Vault asset positions for a particular address.
     * @param address
     * @param addresses filter, if not provided all positions are returned
     * @param overrides
     * @returns
     */
    positionsOf(address: Address, addresses?: Address[], overrides?: CallOverrides): Promise<Position[]>;
    /**
     * Get all Vault underlying token addresses.
     * @param overrides
     * @returns
     */
    tokens(overrides?: CallOverrides): Promise<Address[]>;
}
