import { CommandBus } from "../../../core/command/CommandBus";
import { QueryBus } from "../../../core/query/QueryBus";
import SetDividendRequest from "../request/dividend/SetDividendRequest";
import CancelDividendRequest from "../request/dividend/CancelDividendRequest";
import GetDividendForRequest from "../request/dividend/GetDividendForRequest";
import GetDividendRequest from "../request/dividend/GetDividendRequest";
import GetAllDividendsRequest from "../request/dividend/GetAllDividendsRequest";
import GetDividendHoldersRequest from "../request/dividend/GetDividendHoldersRequest";
import GetTotalDividendHoldersRequest from "../request/dividend/GetTotalDividendHoldersRequest";
import DividendForViewModel from "../response/DividendForViewModel";
import DividendViewModel from "../response/DividendViewModel";
import DividendAmountForViewModel from "../response/DividendAmountForViewModel";
interface IDividendInPort {
    setDividend(request: SetDividendRequest): Promise<{
        payload: number;
        transactionId: string;
    }>;
    cancelDividend(request: CancelDividendRequest): Promise<{
        payload: boolean;
        transactionId: string;
    }>;
    getDividendFor(request: GetDividendForRequest): Promise<DividendForViewModel>;
    getDividendAmountFor(request: GetDividendForRequest): Promise<DividendAmountForViewModel>;
    getDividend(request: GetDividendRequest): Promise<DividendViewModel>;
    getAllDividends(request: GetAllDividendsRequest): Promise<DividendViewModel[]>;
    getDividendHolders(request: GetDividendHoldersRequest): Promise<string[]>;
    getTotalDividendHolders(request: GetTotalDividendHoldersRequest): Promise<number>;
}
declare class DividendInPort implements IDividendInPort {
    private readonly queryBus;
    private readonly commandBus;
    constructor(queryBus?: QueryBus, commandBus?: CommandBus);
    setDividend(request: SetDividendRequest): Promise<{
        payload: number;
        transactionId: string;
    }>;
    cancelDividend(request: CancelDividendRequest): Promise<{
        payload: boolean;
        transactionId: string;
    }>;
    getDividendFor(request: GetDividendForRequest): Promise<DividendForViewModel>;
    getDividendAmountFor(request: GetDividendForRequest): Promise<DividendAmountForViewModel>;
    getDividend(request: GetDividendRequest): Promise<DividendViewModel>;
    getAllDividends(request: GetAllDividendsRequest): Promise<DividendViewModel[]>;
    getDividendHolders(request: GetDividendHoldersRequest): Promise<string[]>;
    getTotalDividendHolders(request: GetTotalDividendHoldersRequest): Promise<number>;
}
declare const DividendToken: DividendInPort;
export default DividendToken;
export type { IDividendInPort };
