import { IAaveGovernanceV2 } from '../../contract-types/IAaveGovernanceV2';
import AaveGovernanceV2Interface from '../../interfaces/v2/AaveGovernanceV2';
import { Configuration, SmartBCHTransactionTypeExtended, GovernanceConfig, tSmartBCHAddress } from '../../types';
import { GovCancelType, GovCreateType, GovExecuteType, GovGetProposalsType, GovGetProposalType, GovGetVotingAtBlockType, GovGetVotingSupplyType, GovQueueType, GovSignVotingType, GovSubmitVoteSignType, GovSubmitVoteType, GovGetTokensVotingPower as GovGetPower, GovGetVoteOnProposal } from '../../types/GovernanceV2MethodTypes';
import { Proposal, Power, Vote } from '../../types/GovernanceV2ReturnTypes';
import BaseService from '../BaseService';
export default class AaveGovernanceV2Service extends BaseService<IAaveGovernanceV2> implements AaveGovernanceV2Interface {
    readonly bandzGovernanceV2Address: string;
    readonly bandzGovernanceV2HelperAddress: string;
    readonly executors: tSmartBCHAddress[];
    readonly governanceConfig: GovernanceConfig | undefined;
    constructor(config: Configuration, governanceConfig: GovernanceConfig | undefined);
    create({ user, targets, values, signatures, calldatas, withDelegateCalls, ipfsHash, executor, }: GovCreateType): Promise<SmartBCHTransactionTypeExtended[]>;
    cancel({ user, proposalId }: GovCancelType): Promise<SmartBCHTransactionTypeExtended[]>;
    queue({ user, proposalId }: GovQueueType): Promise<SmartBCHTransactionTypeExtended[]>;
    execute({ user, proposalId }: GovExecuteType): Promise<SmartBCHTransactionTypeExtended[]>;
    submitVote({ user, proposalId, support }: GovSubmitVoteType): Promise<SmartBCHTransactionTypeExtended[]>;
    signVoting({ support, proposalId }: GovSignVotingType): Promise<string>;
    submitVoteBySignature({ user, proposalId, support, signature }: GovSubmitVoteSignType): Promise<SmartBCHTransactionTypeExtended[]>;
    getProposals({ skip, limit, }: GovGetProposalsType): Promise<Proposal[]>;
    getProposal({ proposalId, }: GovGetProposalType): Promise<Proposal>;
    getPropositionPowerAt({ user, block, strategy, }: GovGetVotingAtBlockType): Promise<string>;
    getVotingPowerAt({ user, block, strategy, }: GovGetVotingAtBlockType): Promise<string>;
    getTotalPropositionSupplyAt({ block, strategy, }: GovGetVotingSupplyType): Promise<string>;
    getTotalVotingSupplyAt({ block, strategy, }: GovGetVotingSupplyType): Promise<string>;
    getTokensPower({ user, tokens }: GovGetPower): Promise<Power[]>;
    getVoteOnProposal({ proposalId, user, }: GovGetVoteOnProposal): Promise<Vote>;
}
