import BigNumber from 'bignumber.js';
import { Context, Entity, Identity } from "../../internal";
import { Authorization, NoArgsProcedureMethod, Signer, SignerValue } from "../../types";
import { HumanReadableType } from "../../types/utils";
export interface UniqueIdentifiers {
    authId: BigNumber;
}
interface HumanReadable {
    issuer: HumanReadableType<Identity>;
    expiry: string | null;
    target: SignerValue;
    data: HumanReadableType<Authorization>;
    id: string;
}
export interface Params {
    target: Signer;
    issuer: Identity;
    expiry: Date | null;
    data: Authorization;
}
/**
 * Represents a request made by an Identity to another Identity (or Account) for some sort of authorization. This has multiple uses. For example, if Alice
 *   wants to transfer ownership of one of her Assets to Bob, this method emits an authorization request for Bob,
 *   who then has to accept it in order to complete the ownership transfer
 */
export declare class AuthorizationRequest extends Entity<UniqueIdentifiers, HumanReadable> {
    /**
     * @hidden
     * Check if a value is of type [[UniqueIdentifiers]]
     */
    static isUniqueIdentifiers(identifier: unknown): identifier is UniqueIdentifiers;
    /**
     * Identity or Account to which the request was emitted
     */
    target: Signer;
    /**
     * Identity that emitted the request
     */
    issuer: Identity;
    /**
     * Authorization Request data corresponding to type of Authorization
     *
     * | Type                        | Data                            |
     * |-----------------------------|---------------------------------|
     * | Add Relayer Paying Key      | Beneficiary, Relayer, Allowance |
     * | Become Agent                | Permission Group                |
     * | Attest Primary Key Rotation | DID                             |
     * | Rotate Primary Key          | DID                             |
     * | Transfer Ticker             | Ticker                          |
     * | Add MultiSig Signer         | Account                         |
     * | Transfer Asset Ownership    | Ticker                          |
     * | Join Identity               | DID                             |
     * | Portfolio Custody           | Portfolio                       |
     */
    data: Authorization;
    /**
     * date at which the Authorization Request expires and can no longer be accepted.
     *   At this point, a new Authorization Request must be emitted. Null if the Request never expires
     */
    expiry: Date | null;
    /**
     * internal identifier for the Request (used to accept/reject/cancel)
     */
    authId: BigNumber;
    /**
     * @hidden
     */
    constructor(args: UniqueIdentifiers & Params, context: Context);
    /**
     * Accept the Authorization Request. You must be the target of the Request to be able to accept it
     */
    accept: NoArgsProcedureMethod<void>;
    /**
     * Remove the Authorization Request
     *
     * - If you are the Request issuer, this will cancel the Authorization
     * - If you are the Request target, this will reject the Authorization
     */
    remove: NoArgsProcedureMethod<void>;
    /**
     * Returns whether the Authorization Request has expired
     */
    isExpired(): boolean;
    /**
     * Determine whether this Authorization Request exists on chain
     */
    exists(): Promise<boolean>;
    /**
     * Return the Authorization's static data
     */
    toJson(): HumanReadable;
}
export {};
//# sourceMappingURL=AuthorizationRequest.d.ts.map