import BigNumber from 'bignumber.js';
import { Account, Context, Entity } from "../../../internal";
import { NoArgsProcedureMethod } from "../../../types";
export interface UniqueIdentifiers {
    /**
     * beneficiary address
     */
    beneficiary: string;
    /**
     * subsidizer address
     */
    subsidizer: string;
}
declare type HumanReadable = UniqueIdentifiers;
/**
 * Represents a Subsidy relationship on chain
 */
export declare class Subsidy extends Entity<UniqueIdentifiers, HumanReadable> {
    /**
     * @hidden
     * Check if a value is of type [[UniqueIdentifiers]]
     */
    static isUniqueIdentifiers(identifier: unknown): identifier is UniqueIdentifiers;
    /**
     * Account whose transactions are being paid for
     */
    beneficiary: Account;
    /**
     * Account that is paying for the transactions
     */
    subsidizer: Account;
    /**
     * @hidden
     */
    constructor(identifiers: UniqueIdentifiers, context: Context);
    /**
     * Terminate this Subsidy relationship. The beneficiary Account will be forced to pay for their own transactions
     *
     * @note both the beneficiary and the subsidizer are allowed to unilaterally quit the Subsidy
     */
    quit: NoArgsProcedureMethod<void>;
    /**
     * Determine whether this Subsidy relationship exists on chain
     */
    exists(): Promise<boolean>;
    /**
     * Get amount of POLYX subsidized for this Subsidy relationship
     *
     * @throws if the Subsidy does not exist
     */
    getAllowance(): Promise<BigNumber>;
    /**
     * Return the Subsidy's static data
     */
    toJson(): HumanReadable;
}
export {};
//# sourceMappingURL=index.d.ts.map