import { TypedEvent } from '../../contractTypes/commons'; import { IAaveGovernanceV2, IGovernancePowerDelegationToken } from '../../contractTypes'; declare type UnPromisify = T extends Promise ? U : T; export declare type Proposal = UnPromisify>; interface IAaveContracts { governance: IAaveGovernanceV2; aaveToken?: IGovernancePowerDelegationToken; stkAaveToken?: IGovernancePowerDelegationToken; } export interface ListenerOptions { url: string; govContractAddress: string; skipCatchup?: boolean; } export declare type Api = IAaveContracts; export declare type RawEvent = TypedEvent; export declare enum EntityKind { Proposal = "proposal" } export declare enum EventKind { ProposalCanceled = "proposal-canceled", ProposalCreated = "proposal-created", ProposalExecuted = "proposal-executed", ProposalQueued = "proposal-queued", VoteEmitted = "vote-emitted", DelegateChanged = "delegate-changed", DelegatedPowerChanged = "delegated-power-changed", Transfer = "transfer", Approval = "approval" } interface IEvent { kind: EventKind; } declare type Address = string; declare type Balance = string; export declare enum ProposalState { PENDING = 0, CANCELED = 1, ACTIVE = 2, FAILED = 3, SUCCEEDED = 4, QUEUED = 5, EXPIRED = 6, EXECUTED = 7 } export declare enum DelegationType { VOTING_POWER = 0, PROPOSITION_POWER = 1 } export interface IProposalCanceled extends IEvent { kind: EventKind.ProposalCanceled; id: number; } export interface IProposalCreated extends IEvent { kind: EventKind.ProposalCreated; id: number; proposer: Address; executor: Address; targets: Address[]; values: Balance[]; signatures: Address[]; calldatas: string[]; startBlock: number; endBlock: number; strategy: string; ipfsHash: string; } export interface IProposalExecuted extends IEvent { kind: EventKind.ProposalExecuted; id: number; } export interface IProposalQueued extends IEvent { kind: EventKind.ProposalQueued; id: number; executionTime: number; } export interface IVoteEmitted extends IEvent { kind: EventKind.VoteEmitted; id: number; voter: Address; support: boolean; votingPower: Balance; } export interface IDelegateChanged extends IEvent { kind: EventKind.DelegateChanged; tokenAddress: Address; delegator: Address; delegatee: Address; type: DelegationType; } export interface IDelegatedPowerChanged { kind: EventKind.DelegatedPowerChanged; tokenAddress: Address; who: Address; amount: Balance; type: DelegationType; } export interface ITransfer { kind: EventKind.Transfer; tokenAddress: Address; from: Address; to: Address; amount: Balance; } export interface IApproval { kind: EventKind.Approval; tokenAddress: Address; owner: Address; spender: Address; amount: Balance; } export declare type IEventData = IProposalCanceled | IProposalCreated | IProposalExecuted | IProposalQueued | IVoteEmitted | IDelegateChanged | IDelegatedPowerChanged | ITransfer | IApproval; export declare const EventKinds: EventKind[]; export {};