import { ethers } from 'ethers';
import { BigNumber } from '@ethersproject/bignumber';
import NetworkService from '../../../app/service/network/NetworkService';
import EvmAddress from '../../../domain/context/contract/EvmAddress';
import { MirrorNodeAdapter } from '../mirror/MirrorNodeAdapter';
import { Security } from '../../../domain/context/security/Security';
import { BondDetails } from '../../../domain/context/bond/BondDetails';
import { Dividend } from '../../../domain/context/equity/Dividend';
import BigDecimal from '../../../domain/context/shared/BigDecimal';
import { ScheduledSnapshot } from '../../../domain/context/security/ScheduledSnapshot';
import { VotingRights } from '../../../domain/context/equity/VotingRights';
import { Coupon } from '../../../domain/context/bond/Coupon';
import { EquityDetails } from '../../../domain/context/equity/EquityDetails';
import { Regulation } from '../../../domain/context/factory/Regulation';
import { ScheduledBalanceAdjustment } from '../../../domain/context/equity/ScheduledBalanceAdjustment';
import { DividendFor } from '../../../domain/context/equity/DividendFor';
import { VotingFor } from '../../../domain/context/equity/VotingFor';
import { Kyc } from '../../../domain/context/kyc/Kyc';
import { KycAccountData } from '../../../domain/context/kyc/KycAccountData';
import { ClearingHoldCreation, ClearingOperationType, ClearingRedeem, ClearingTransfer } from '../../../domain/context/security/Clearing';
import { HoldDetails } from '../../../domain/context/security/Hold';
import { CouponAmountFor } from '../../../domain/context/bond/CouponAmountFor';
import { PrincipalFor } from '../../../domain/context/bond/PrincipalFor';
import { DividendAmountFor } from '../../../domain/context/equity/DividendAmountFor';
type StaticConnect = {
    connect: (...args: any[]) => any;
};
type FactoryContract<T extends StaticConnect> = T['connect'] extends (...args: any[]) => infer K ? K : never;
export declare class RPCQueryAdapter {
    private readonly networkService;
    readonly mirrorNode: MirrorNodeAdapter;
    provider: ethers.providers.JsonRpcProvider;
    constructor(networkService: NetworkService, mirrorNode: MirrorNodeAdapter);
    init(urlRpcProvider?: string, apiKey?: string): Promise<string>;
    connect<T extends StaticConnect>(fac: T, address: string): FactoryContract<T>;
    balanceOf(address: EvmAddress, target: EvmAddress): Promise<BigNumber>;
    balanceOfByPartition(address: EvmAddress, target: EvmAddress, partitionId: string): Promise<BigNumber>;
    balanceOfAtSnapshot(address: EvmAddress, target: EvmAddress, snapshotId: number): Promise<BigNumber>;
    balanceOfAtSnapshotByPartition(address: EvmAddress, target: EvmAddress, partitionId: string, snapshotId: number): Promise<BigNumber>;
    getNounceFor(address: EvmAddress, target: EvmAddress): Promise<BigNumber>;
    partitionsOf(address: EvmAddress, targetId: EvmAddress): Promise<string[]>;
    partitionsOfAtSnapshot(address: EvmAddress, targetId: EvmAddress, snapshotId: number): Promise<string[]>;
    totalSupply(address: EvmAddress): Promise<BigNumber>;
    totalSupplyAtSnapshot(address: EvmAddress, snapshotId: number): Promise<BigNumber>;
    getRolesFor(address: EvmAddress, target: EvmAddress, start: number, end: number): Promise<string[]>;
    getRoleMembers(address: EvmAddress, role: string, start: number, end: number): Promise<string[]>;
    getRoleCountFor(address: EvmAddress, target: EvmAddress): Promise<number>;
    getRoleMemberCount(address: EvmAddress, role: string): Promise<number>;
    hasRole(address: EvmAddress, target: EvmAddress, role: string): Promise<boolean>;
    getSecurity(address: EvmAddress): Promise<Security>;
    getEquityDetails(address: EvmAddress): Promise<EquityDetails>;
    getBondDetails(address: EvmAddress): Promise<BondDetails>;
    getControlListMembers(address: EvmAddress, start: number, end: number): Promise<string[]>;
    getControlListCount(address: EvmAddress): Promise<number>;
    getControlListType(address: EvmAddress): Promise<boolean>;
    isAccountInControlList(address: EvmAddress, target: EvmAddress): Promise<boolean>;
    getDividendsFor(address: EvmAddress, target: EvmAddress, dividend: number): Promise<DividendFor>;
    getDividendAmountFor(address: EvmAddress, target: EvmAddress, dividend: number): Promise<DividendAmountFor>;
    getDividends(address: EvmAddress, dividend: number): Promise<Dividend>;
    getDividendsCount(address: EvmAddress): Promise<number>;
    getVotingFor(address: EvmAddress, target: EvmAddress, voting: number): Promise<VotingFor>;
    getVoting(address: EvmAddress, voting: number): Promise<VotingRights>;
    getVotingsCount(address: EvmAddress): Promise<number>;
    getCouponFor(address: EvmAddress, target: EvmAddress, coupon: number): Promise<BigNumber>;
    getCouponAmountFor(address: EvmAddress, target: EvmAddress, coupon: number): Promise<CouponAmountFor>;
    getPrincipalFor(address: EvmAddress, target: EvmAddress): Promise<PrincipalFor>;
    getCoupon(address: EvmAddress, coupon: number): Promise<Coupon>;
    getCouponCount(address: EvmAddress): Promise<number>;
    isPaused(address: EvmAddress): Promise<boolean>;
    arePartitionsProtected(address: EvmAddress): Promise<boolean>;
    canTransferByPartition(address: EvmAddress, sourceId: EvmAddress, targetId: EvmAddress, amount: BigDecimal, partitionId: string, data: string, operatorData: string, operatorId: string): Promise<[boolean, string, string]>;
    canTransfer(address: EvmAddress, targetId: EvmAddress, amount: BigDecimal, data: string, operatorId: string): Promise<[boolean, string, string]>;
    canRedeemByPartition(address: EvmAddress, sourceId: EvmAddress, amount: BigDecimal, partitionId: string, data: string, operatorData: string, operatorId: string): Promise<[boolean, string, string]>;
    getDocument(address: EvmAddress, name: string): Promise<[string, string, BigNumber]>;
    getAllDocuments(address: EvmAddress): Promise<string[]>;
    isOperatorForPartition(address: EvmAddress, partitionId: string, operator: EvmAddress, target: EvmAddress): Promise<boolean>;
    isOperator(address: EvmAddress, operator: EvmAddress, target: EvmAddress): Promise<boolean>;
    getScheduledSnapshots(address: EvmAddress, start: number, end: number): Promise<ScheduledSnapshot[]>;
    scheduledSnapshotCount(address: EvmAddress): Promise<number>;
    getMaxSupply(address: EvmAddress): Promise<BigNumber>;
    getMaxSupplyByPartition(address: EvmAddress, partitionId: string): Promise<BigNumber>;
    getTotalSupplyByPartition(address: EvmAddress, partitionId: string): Promise<BigNumber>;
    getRegulationDetails(type: number, subType: number, factoryAddress: EvmAddress): Promise<Regulation>;
    getLockedBalanceOf(address: EvmAddress, target: EvmAddress): Promise<BigNumber>;
    getLockCount(address: EvmAddress, target: EvmAddress): Promise<number>;
    getLocksId(address: EvmAddress, target: EvmAddress, start: number, end: number): Promise<BigNumber[]>;
    getLock(address: EvmAddress, target: EvmAddress, lockId: number): Promise<[BigNumber, BigNumber]>;
    getConfigInfo(address: EvmAddress): Promise<[string, string, number]>;
    getScheduledBalanceAdjustment(address: EvmAddress, balanceAdjustmentId: number): Promise<ScheduledBalanceAdjustment>;
    getScheduledBalanceAdjustmentCount(address: EvmAddress): Promise<number>;
    getHeldAmountFor(address: EvmAddress, targetId: EvmAddress): Promise<number>;
    getHeldAmountForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress): Promise<number>;
    getHoldCountForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress): Promise<number>;
    getHoldsIdForByPartition(address: EvmAddress, partitionId: string, target: EvmAddress, start: number, end: number): Promise<number[]>;
    getHoldForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress, holdId: number): Promise<HoldDetails>;
    getRevocationRegistryAddress(address: EvmAddress): Promise<string>;
    getIssuerListCount(address: EvmAddress): Promise<number>;
    getIssuerListMembers(address: EvmAddress, start: number, end: number): Promise<string[]>;
    isIssuer(address: EvmAddress, issuer: EvmAddress): Promise<boolean>;
    getKycFor(address: EvmAddress, targetId: EvmAddress): Promise<Kyc>;
    getKycStatusFor(address: EvmAddress, targetId: EvmAddress): Promise<number>;
    getKycAccountsData(address: EvmAddress, kycStatus: number, start: number, end: number): Promise<KycAccountData[]>;
    getKycAccountsCount(address: EvmAddress, kycStatus: number): Promise<number>;
    getClearedAmountFor(address: EvmAddress, targetId: EvmAddress): Promise<number>;
    getClearedAmountForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress): Promise<number>;
    getClearingCountForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress, clearingOperationType: ClearingOperationType): Promise<number>;
    getClearingsIdForByPartition(address: EvmAddress, partitionId: string, target: EvmAddress, clearingOperationType: ClearingOperationType, start: number, end: number): Promise<number[]>;
    getClearingCreateHoldForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress, clearingId: number): Promise<ClearingHoldCreation>;
    getClearingRedeemForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress, clearingId: number): Promise<ClearingRedeem>;
    getClearingTransferForByPartition(address: EvmAddress, partitionId: string, targetId: EvmAddress, clearingId: number): Promise<ClearingTransfer>;
    isClearingActivated(address: EvmAddress): Promise<boolean>;
    isExternalPause(address: EvmAddress, externalPauseAddress: EvmAddress): Promise<boolean>;
    getExternalPausesCount(address: EvmAddress): Promise<number>;
    getExternalPausesMembers(address: EvmAddress, start: number, end: number): Promise<string[]>;
    isPausedMock(address: EvmAddress): Promise<boolean>;
    isExternalControlList(address: EvmAddress, externalControlListAddress: EvmAddress): Promise<boolean>;
    getExternalControlListsCount(address: EvmAddress): Promise<number>;
    getExternalControlListsMembers(address: EvmAddress, start: number, end: number): Promise<string[]>;
    isAuthorizedBlackListMock(address: EvmAddress, targetId: EvmAddress): Promise<boolean>;
    isAuthorizedWhiteListMock(address: EvmAddress, targetId: EvmAddress): Promise<boolean>;
    isExternalKycList(address: EvmAddress, externalKycListAddress: EvmAddress): Promise<boolean>;
    getExternalKycListsCount(address: EvmAddress): Promise<number>;
    getExternalKycListsMembers(address: EvmAddress, start: number, end: number): Promise<string[]>;
    isExternallyGranted(address: EvmAddress, kycStatus: number, targetId: EvmAddress): Promise<boolean>;
    isInternalKycActivated(address: EvmAddress): Promise<boolean>;
    getKycStatusMock(address: EvmAddress, targetId: EvmAddress): Promise<number>;
    onchainID(address: EvmAddress): Promise<string>;
    identityRegistry(address: EvmAddress): Promise<string>;
    compliance(address: EvmAddress): Promise<string>;
    getFrozenPartialTokens(address: EvmAddress, targetId: EvmAddress): Promise<number>;
    isAddressRecovered(address: EvmAddress, targetId: EvmAddress): Promise<boolean>;
    getTokenHoldersAtSnapshot(address: EvmAddress, snapshotId: number, start: number, end: number): Promise<string[]>;
    getTotalTokenHoldersAtSnapshot(address: EvmAddress, snapshotId: number): Promise<number>;
    getCouponHolders(address: EvmAddress, couponId: number, start: number, end: number): Promise<string[]>;
    getTotalCouponHolders(address: EvmAddress, couponId: number): Promise<number>;
    getDividendHolders(address: EvmAddress, dividendId: number, start: number, end: number): Promise<string[]>;
    getTotalDividendHolders(address: EvmAddress, dividendId: number): Promise<number>;
    getVotingHolders(address: EvmAddress, voteId: number, start: number, end: number): Promise<string[]>;
    getTotalVotingHolders(address: EvmAddress, voteId: number): Promise<number>;
    getSecurityHolders(address: EvmAddress, start: number, end: number): Promise<string[]>;
    getTotalSecurityHolders(address: EvmAddress): Promise<number>;
    getTrexTokenBySalt(factory: EvmAddress, salt: string): Promise<string>;
    isProceedRecipient(address: EvmAddress, proceedRecipient: EvmAddress): Promise<boolean>;
    getProceedRecipientData(address: EvmAddress, proceedRecipient: EvmAddress): Promise<string>;
    getProceedRecipientsCount(address: EvmAddress): Promise<number>;
    getProceedRecipients(address: EvmAddress, page: number, pageLength: number): Promise<string[]>;
}
export {};
