/// <reference types="node" />
import { As } from 'type-tagger';
import { IBaseTx } from '../base';
import { BaseLiskCodec, LiskTransaction } from './base_lisk';
/**
 * Voting Item for the Vote Transaction interface
 */
export interface IVoteItem<IDentifier> {
    /**
     * The identifier of the delegate to vote/unvoite
     */
    delegateIdentifier: IDentifier;
    /**
     * An optional vote weight to assign to the delegate. (If the coin supports it)
     */
    weight?: string;
    /**
     * The action to perform + => vote, - => unvote
     */
    action: '-' | '+';
}
/**
 * Vote transaction identifier
 */
export interface IVoteTx<IDentifier = Buffer & As<'publicKey'>> extends IBaseTx {
    readonly kind: 'vote';
    /**
     * Preference array of the votes to perform
     */
    readonly preferences: Array<IVoteItem<IDentifier>>;
}
export declare type LiskVotesAsset = {
    votes?: string[];
};
export declare class LiskVoteTxCodec extends BaseLiskCodec<LiskVotesAsset> {
    constructor();
    calcFees(tx: IVoteTx): number;
    transform(from: IVoteTx): LiskTransaction<LiskVotesAsset>;
    protected assetBytes(tx: LiskTransaction<LiskVotesAsset>): Buffer;
}
