import { Context, Identity, Namespace, SecurityToken, SetAssetRequirementsParams } from "../../../../internal";
import { Compliance, ProcedureMethod, Requirement, SubCallback, UnsubCallback } from "../../../../types";
/**
 * Handles all Security Token Compliance Requirements related functionality
 */
export declare class Requirements extends Namespace<SecurityToken> {
    /**
     * @hidden
     */
    constructor(parent: SecurityToken, context: Context);
    /**
     * Configure asset compliance requirements for the Security Token. This operation will replace all existing requirements with a new requirement set
     *
     * This requires two transactions
     *
     * @example Say A, B, C, D and E are requirements and we arrange them as `[[A, B], [C, D], [E]]`.
     * For a transfer to succeed, it must either comply with A AND B, C AND D, OR E.
     */
    set: ProcedureMethod<SetAssetRequirementsParams, SecurityToken>;
    /**
     * Retrieve all of the Security Token's requirements
     *
     * @note can be subscribed to
     */
    get(): Promise<Requirement[]>;
    get(callback: SubCallback<Requirement[]>): Promise<UnsubCallback>;
    /**
     * Detele all the current requirements for the Security Token.
     */
    reset: ProcedureMethod<void, SecurityToken>;
    /**
     * Pause all the Security Token's requirements. This means that all transfers will be allowed until requirements are unpaused
     */
    pause: ProcedureMethod<void, SecurityToken>;
    /**
     * Un-pause all the Security Token's current requirements
     */
    unpause: ProcedureMethod<void, SecurityToken>;
    /**
     * Check whether the sender and receiver Identities in a transfer comply with all the requirements of this asset
     *
     * @note this does not take balances into account
     *
     * @param args.from - sender Identity (optional, defaults to the current Identity)
     * @param args.to - receiver Identity
     *
     * @deprecated in favor of `settlements.canTransfer`
     */
    checkSettle(args: {
        from?: string | Identity;
        to: string | Identity;
    }): Promise<Compliance>;
    /**
     * Check whether asset compliance requirements are paused or not
     */
    arePaused(): Promise<boolean>;
}
//# sourceMappingURL=Requirements.d.ts.map