import TransactionResponse from '../../../domain/context/transaction/TransactionResponse';
import TransactionAdapter, { InitializationData } from '../TransactionAdapter';
import { Signer } from 'ethers';
import Account from '../../../domain/context/account/Account';
import { MirrorNodeAdapter } from '../mirror/MirrorNodeAdapter';
import EventService from '../../../app/service/event/EventService';
import { CommandBus } from '../../../core/command/CommandBus';
import { MirrorNodes } from '../../../domain/context/network/MirrorNode';
import { JsonRpcRelays } from '../../../domain/context/network/JsonRpcRelay';
import { Factories } from '../../../domain/context/factory/Factories';
import BigDecimal from '../../../domain/context/shared/BigDecimal';
import { ContractId } from '@hashgraph/sdk';
import { Security } from '../../../domain/context/security/Security';
import { SecurityRole } from '../../../domain/context/security/SecurityRole';
import { Resolvers } from '../../../domain/context/factory/Resolvers';
import EvmAddress from '../../../domain/context/contract/EvmAddress';
import { BondDetails } from '../../../domain/context/bond/BondDetails';
import { EquityDetails } from '../../../domain/context/equity/EquityDetails';
import type { Provider } from '@ethersproject/providers';
import { ClearingOperationType } from '../../../domain/context/security/Clearing';
import NetworkService from '../../../app/service/network/NetworkService';
export declare class RPCTransactionAdapter extends TransactionAdapter {
    private readonly mirrorNodeAdapter;
    private readonly networkService;
    private readonly eventService;
    private readonly commandBus;
    private metamaskService;
    constructor(mirrorNodeAdapter: MirrorNodeAdapter, networkService: NetworkService, eventService: EventService, commandBus: CommandBus);
    init(debug?: boolean): Promise<string>;
    register(account?: Account, debug?: boolean): Promise<InitializationData>;
    stop(): Promise<boolean>;
    getMirrorNodeAdapter(): MirrorNodeAdapter;
    getAccount(): Account;
    setConfig(config: {
        mirrorNodes?: MirrorNodes;
        jsonRpcRelays?: JsonRpcRelays;
        factories?: Factories;
        resolvers?: Resolvers;
    }): void;
    getSignerOrProvider(): Signer | Provider;
    setSignerOrProvider(signerOrProvider: Signer | Provider): void;
    createEquity(securityInfo: Security, equityInfo: EquityDetails, factory: EvmAddress, resolver: EvmAddress, configId: string, configVersion: number, compliance: EvmAddress, identityRegistryAddress: EvmAddress, externalPauses?: EvmAddress[], externalControlLists?: EvmAddress[], externalKycLists?: EvmAddress[], diamondOwnerAccount?: EvmAddress): Promise<TransactionResponse>;
    createBond(securityInfo: Security, bondInfo: BondDetails, factory: EvmAddress, resolver: EvmAddress, configId: string, configVersion: number, compliance: EvmAddress, identityRegistryAddress: EvmAddress, externalPauses?: EvmAddress[], externalControlLists?: EvmAddress[], externalKycLists?: EvmAddress[], diamondOwnerAccount?: EvmAddress, proceedRecipients?: EvmAddress[], proceedRecipientsData?: string[]): Promise<TransactionResponse>;
    transfer(security: EvmAddress, targetId: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    transferAndLock(security: EvmAddress, targetId: EvmAddress, amount: BigDecimal, expirationDate: BigDecimal): Promise<TransactionResponse>;
    redeem(security: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    burn(security: EvmAddress, source: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    pause(security: EvmAddress): Promise<TransactionResponse>;
    unpause(security: EvmAddress): Promise<TransactionResponse>;
    grantRole(security: EvmAddress, targetId: EvmAddress, role: SecurityRole): Promise<TransactionResponse>;
    applyRoles(security: EvmAddress, targetId: EvmAddress, roles: SecurityRole[], actives: boolean[]): Promise<TransactionResponse>;
    revokeRole(security: EvmAddress, targetId: EvmAddress, role: SecurityRole): Promise<TransactionResponse>;
    renounceRole(security: EvmAddress, role: SecurityRole): Promise<TransactionResponse>;
    issue(security: EvmAddress, targetId: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    mint(security: EvmAddress, target: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    addToControlList(security: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    removeFromControlList(security: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    controllerTransfer(security: EvmAddress, sourceId: EvmAddress, targetId: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    forcedTransfer(security: EvmAddress, source: EvmAddress, target: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    controllerRedeem(security: EvmAddress, sourceId: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    setDividends(security: EvmAddress, recordDate: BigDecimal, executionDate: BigDecimal, amount: BigDecimal): Promise<TransactionResponse>;
    setVotingRights(security: EvmAddress, recordDate: BigDecimal, data: string): Promise<TransactionResponse>;
    setCoupon(security: EvmAddress, recordDate: BigDecimal, executionDate: BigDecimal, rate: BigDecimal, period: BigDecimal, securityId?: ContractId | string): Promise<TransactionResponse>;
    takeSnapshot(security: EvmAddress): Promise<TransactionResponse>;
    setDocument(security: EvmAddress, name: string, uri: string, hash: string): Promise<TransactionResponse>;
    removeDocument(security: EvmAddress, name: string): Promise<TransactionResponse>;
    authorizeOperator(security: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    revokeOperator(security: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    authorizeOperatorByPartition(security: EvmAddress, targetId: EvmAddress, partitionId: string): Promise<TransactionResponse>;
    revokeOperatorByPartition(security: EvmAddress, targetId: EvmAddress, partitionId: string): Promise<TransactionResponse>;
    operatorTransferByPartition(security: EvmAddress, sourceId: EvmAddress, targetId: EvmAddress, amount: BigDecimal, partitionId: string): Promise<TransactionResponse>;
    setMaxSupply(security: EvmAddress, maxSupply: BigDecimal): Promise<TransactionResponse>;
    triggerPendingScheduledSnapshots(security: EvmAddress): Promise<TransactionResponse>;
    triggerScheduledSnapshots(security: EvmAddress, max: BigDecimal): Promise<TransactionResponse>;
    lock(security: EvmAddress, sourceId: EvmAddress, amount: BigDecimal, expirationDate: BigDecimal): Promise<TransactionResponse>;
    release(security: EvmAddress, sourceId: EvmAddress, lockId: BigDecimal): Promise<TransactionResponse>;
    updateConfigVersion(security: EvmAddress, configVersion: number): Promise<TransactionResponse>;
    updateConfig(security: EvmAddress, configId: string, configVersion: number): Promise<TransactionResponse>;
    updateResolver(security: EvmAddress, resolver: EvmAddress, configVersion: number, configId: string): Promise<TransactionResponse>;
    updateMaturityDate(security: EvmAddress, maturityDate: number): Promise<TransactionResponse>;
    setScheduledBalanceAdjustment(security: EvmAddress, executionDate: BigDecimal, factor: BigDecimal, decimals: BigDecimal): Promise<TransactionResponse>;
    protectPartitions(address: EvmAddress): Promise<TransactionResponse>;
    unprotectPartitions(address: EvmAddress): Promise<TransactionResponse>;
    protectedRedeemFromByPartition(security: EvmAddress, partitionId: string, sourceId: EvmAddress, amount: BigDecimal, deadline: BigDecimal, nounce: BigDecimal, signature: string): Promise<TransactionResponse>;
    protectedTransferFromByPartition(security: EvmAddress, partitionId: string, sourceId: EvmAddress, targetId: EvmAddress, amount: BigDecimal, deadline: BigDecimal, nounce: BigDecimal, signature: string): Promise<TransactionResponse>;
    protectedTransferAndLockByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal, deadline: BigDecimal, nounce: BigDecimal, signature: string): Promise<TransactionResponse>;
    createHoldByPartition(security: EvmAddress, partitionId: string, escrowId: EvmAddress, amount: BigDecimal, targetId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    createHoldFromByPartition(security: EvmAddress, partitionId: string, escrowId: EvmAddress, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    controllerCreateHoldByPartition(security: EvmAddress, partitionId: string, escrowId: EvmAddress, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    protectedCreateHoldByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, escrowId: EvmAddress, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal, deadline: BigDecimal, nonce: BigDecimal, signature: string): Promise<TransactionResponse>;
    releaseHoldByPartition(security: EvmAddress, partitionId: string, holdId: number, targetId: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    reclaimHoldByPartition(security: EvmAddress, partitionId: string, holdId: number, targetId: EvmAddress): Promise<TransactionResponse>;
    executeHoldByPartition(security: EvmAddress, sourceId: EvmAddress, targetId: EvmAddress, amount: BigDecimal, partitionId: string, holdId: number): Promise<TransactionResponse>;
    setRevocationRegistryAddress(security: EvmAddress, revocationRegistry: EvmAddress): Promise<TransactionResponse>;
    addIssuer(security: EvmAddress, issuer: EvmAddress): Promise<TransactionResponse>;
    removeIssuer(security: EvmAddress, issuer: EvmAddress): Promise<TransactionResponse>;
    grantKyc(security: EvmAddress, targetId: EvmAddress, vcId: string, validFrom: BigDecimal, validTo: BigDecimal, issuer: EvmAddress): Promise<TransactionResponse>;
    revokeKyc(security: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    activateClearing(security: EvmAddress): Promise<TransactionResponse>;
    deactivateClearing(security: EvmAddress): Promise<TransactionResponse>;
    clearingTransferByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, targetId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    clearingTransferFromByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    protectedClearingTransferByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal, deadline: BigDecimal, nonce: BigDecimal, signature: string): Promise<TransactionResponse>;
    approveClearingOperationByPartition(security: EvmAddress, partitionId: string, targetId: EvmAddress, clearingId: number, clearingOperationType: ClearingOperationType): Promise<TransactionResponse>;
    cancelClearingOperationByPartition(security: EvmAddress, partitionId: string, targetId: EvmAddress, clearingId: number, clearingOperationType: ClearingOperationType): Promise<TransactionResponse>;
    reclaimClearingOperationByPartition(security: EvmAddress, partitionId: string, targetId: EvmAddress, clearingId: number, clearingOperationType: ClearingOperationType): Promise<TransactionResponse>;
    clearingRedeemByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, expirationDate: BigDecimal): Promise<TransactionResponse>;
    clearingRedeemFromByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    protectedClearingRedeemByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, expirationDate: BigDecimal, deadline: BigDecimal, nonce: BigDecimal, signature: string): Promise<TransactionResponse>;
    clearingCreateHoldByPartition(security: EvmAddress, partitionId: string, escrowId: EvmAddress, amount: BigDecimal, targetId: EvmAddress, clearingExpirationDate: BigDecimal, holdExpirationDate: BigDecimal): Promise<TransactionResponse>;
    clearingCreateHoldFromByPartition(security: EvmAddress, partitionId: string, escrowId: EvmAddress, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, clearingExpirationDate: BigDecimal, holdExpirationDate: BigDecimal): Promise<TransactionResponse>;
    protectedClearingCreateHoldByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, escrowId: EvmAddress, sourceId: EvmAddress, targetId: EvmAddress, clearingExpirationDate: BigDecimal, holdExpirationDate: BigDecimal, deadline: BigDecimal, nonce: BigDecimal, signature: string): Promise<TransactionResponse>;
    operatorClearingCreateHoldByPartition(security: EvmAddress, partitionId: string, escrowId: EvmAddress, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, clearingExpirationDate: BigDecimal, holdExpirationDate: BigDecimal): Promise<TransactionResponse>;
    operatorClearingRedeemByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    operatorClearingTransferByPartition(security: EvmAddress, partitionId: string, amount: BigDecimal, sourceId: EvmAddress, targetId: EvmAddress, expirationDate: BigDecimal): Promise<TransactionResponse>;
    updateExternalPauses(security: EvmAddress, externalPausesAddresses: EvmAddress[], actives: boolean[]): Promise<TransactionResponse>;
    addExternalPause(security: EvmAddress, externalPauseAddress: EvmAddress): Promise<TransactionResponse>;
    removeExternalPause(security: EvmAddress, externalPauseAddress: EvmAddress): Promise<TransactionResponse>;
    setPausedMock(contract: EvmAddress, paused: boolean): Promise<TransactionResponse>;
    createExternalPauseMock(): Promise<string>;
    updateExternalControlLists(security: EvmAddress, externalControlListsAddresses: EvmAddress[], actives: boolean[]): Promise<TransactionResponse>;
    addExternalControlList(security: EvmAddress, externalControlListAddress: EvmAddress): Promise<TransactionResponse>;
    removeExternalControlList(security: EvmAddress, externalControlListAddress: EvmAddress): Promise<TransactionResponse>;
    addToBlackListMock(contract: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    addToWhiteListMock(contract: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    removeFromBlackListMock(contract: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    removeFromWhiteListMock(contract: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    createExternalBlackListMock(): Promise<string>;
    createExternalWhiteListMock(): Promise<string>;
    updateExternalKycLists(security: EvmAddress, externalKycListsAddresses: EvmAddress[], actives: boolean[]): Promise<TransactionResponse>;
    addExternalKycList(security: EvmAddress, externalKycListAddress: EvmAddress): Promise<TransactionResponse>;
    removeExternalKycList(security: EvmAddress, externalKycListAddress: EvmAddress): Promise<TransactionResponse>;
    grantKycMock(contract: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    revokeKycMock(contract: EvmAddress, targetId: EvmAddress): Promise<TransactionResponse>;
    createExternalKycListMock(): Promise<string>;
    activateInternalKyc(security: EvmAddress): Promise<TransactionResponse>;
    deactivateInternalKyc(security: EvmAddress): Promise<TransactionResponse>;
    setName(security: EvmAddress, name: string): Promise<TransactionResponse>;
    setSymbol(security: EvmAddress, symbol: string): Promise<TransactionResponse>;
    setOnchainID(security: EvmAddress, onchainID: EvmAddress): Promise<TransactionResponse>;
    setIdentityRegistry(security: EvmAddress, identityRegistry: EvmAddress): Promise<TransactionResponse>;
    setCompliance(security: EvmAddress, compliance: EvmAddress): Promise<TransactionResponse>;
    freezePartialTokens(security: EvmAddress, amount: BigDecimal, targetId: EvmAddress): Promise<TransactionResponse>;
    unfreezePartialTokens(security: EvmAddress, amount: BigDecimal, targetId: EvmAddress): Promise<TransactionResponse>;
    recoveryAddress(security: EvmAddress, lostWallet: EvmAddress, newWallet: EvmAddress): Promise<TransactionResponse>;
    addAgent(security: EvmAddress, agentId: EvmAddress): Promise<TransactionResponse>;
    removeAgent(security: EvmAddress, agentId: EvmAddress): Promise<TransactionResponse>;
    batchTransfer(security: EvmAddress, amountList: BigDecimal[], toList: EvmAddress[]): Promise<TransactionResponse>;
    batchForcedTransfer(security: EvmAddress, amountList: BigDecimal[], fromList: EvmAddress[], toList: EvmAddress[]): Promise<TransactionResponse>;
    batchMint(security: EvmAddress, amountList: BigDecimal[], toList: EvmAddress[]): Promise<TransactionResponse>;
    batchBurn(security: EvmAddress, amountList: BigDecimal[], targetList: EvmAddress[]): Promise<TransactionResponse>;
    batchSetAddressFrozen(security: EvmAddress, freezeList: boolean[], targetList: EvmAddress[]): Promise<TransactionResponse>;
    batchFreezePartialTokens(security: EvmAddress, amountList: BigDecimal[], targetList: EvmAddress[]): Promise<TransactionResponse>;
    batchUnfreezePartialTokens(security: EvmAddress, amountList: BigDecimal[], targetList: EvmAddress[]): Promise<TransactionResponse>;
    setAddressFrozen(security: EvmAddress, status: boolean, target: EvmAddress): Promise<TransactionResponse>;
    redeemAtMaturityByPartition(security: EvmAddress, partitionId: string, sourceId: EvmAddress, amount: BigDecimal): Promise<TransactionResponse>;
    fullRedeemAtMaturity(security: EvmAddress, sourceId: EvmAddress): Promise<TransactionResponse>;
    private executeTransaction;
    private createSecurity;
    createTrexSuiteBond(salt: string, owner: string, irs: string, onchainId: string, irAgents: string[], tokenAgents: string[], compliancesModules: string[], complianceSettings: string[], claimTopics: number[], issuers: string[], issuerClaims: number[][], security: Security, bondDetails: BondDetails, factory: EvmAddress, resolver: EvmAddress, configId: string, configVersion: number, compliance: EvmAddress, identityRegistryAddress: EvmAddress, diamondOwnerAccount: EvmAddress, proceedRecipients?: EvmAddress[], proceedRecipientsData?: string[], externalPauses?: EvmAddress[], externalControlLists?: EvmAddress[], externalKycLists?: EvmAddress[]): Promise<TransactionResponse>;
    createTrexSuiteEquity(salt: string, owner: string, irs: string, onchainId: string, irAgents: string[], tokenAgents: string[], compliancesModules: string[], complianceSettings: string[], claimTopics: number[], issuers: string[], issuerClaims: number[][], security: Security, equityDetails: EquityDetails, factory: EvmAddress, resolver: EvmAddress, configId: string, configVersion: number, compliance: EvmAddress, identityRegistryAddress: EvmAddress, diamondOwnerAccount: EvmAddress, externalPauses?: EvmAddress[], externalControlLists?: EvmAddress[], externalKycLists?: EvmAddress[]): Promise<TransactionResponse>;
    private createTrexSuite;
    addProceedRecipient(security: EvmAddress, proceedRecipient: EvmAddress, data: string, securityId?: ContractId | string): Promise<TransactionResponse>;
    removeProceedRecipient(security: EvmAddress, proceedRecipient: EvmAddress, securityId?: ContractId | string): Promise<TransactionResponse>;
    updateProceedRecipientData(security: EvmAddress, proceedRecipient: EvmAddress, data: string): Promise<TransactionResponse>;
}
