import { Asset, AuthorizationRequest, Context, CreateAssetParams, Entity, TransferTickerOwnershipParams } from "../../../internal";
import { NoArgsProcedureMethod, ProcedureMethod, SubCallback, UnsubCallback } from "../../../types";
import { TickerReservationDetails } from './types';
/**
 * Properties that uniquely identify a TickerReservation
 */
export interface UniqueIdentifiers {
    ticker: string;
}
/**
 * Represents a reserved Asset symbol in the Polymesh blockchain. Ticker reservations expire
 *   after a set length of time, after which they can be reserved by another Identity.
 *   A Ticker must be previously reserved by an Identity for that Identity to be able create an Asset with it
 */
export declare class TickerReservation extends Entity<UniqueIdentifiers, string> {
    /**
     * @hidden
     * Check if a value is of type {@link UniqueIdentifiers}
     */
    static isUniqueIdentifiers(identifier: unknown): identifier is UniqueIdentifiers;
    /**
     * reserved ticker
     */
    ticker: string;
    /**
     * @hidden
     */
    constructor(identifiers: UniqueIdentifiers, context: Context);
    /**
     * Retrieve the Reservation's owner, expiry date and status
     *
     * @note can be subscribed to
     */
    details(): Promise<TickerReservationDetails>;
    details(callback: SubCallback<TickerReservationDetails>): Promise<UnsubCallback>;
    /**
     * Extend the Reservation time period of the ticker for 60 days from now
     * to later use it in the creation of an Asset.
     *
     * @note required role:
     *   - Ticker Owner
     */
    extend: NoArgsProcedureMethod<TickerReservation>;
    /**
     * Create an Asset using the reserved ticker
     *
     * @note required role:
     *   - Ticker Owner
     */
    createAsset: ProcedureMethod<CreateAssetParams, Asset>;
    /**
     * Transfer ownership of the Ticker Reservation to another Identity. This generates an authorization request that must be accepted
     *   by the destinatary
     *
     * @note this will create {@link AuthorizationRequest | Authorization Request} which has to be accepted by the `target` Identity.
     *   An {@link Account} or {@link Identity} can fetch its pending Authorization Requests by calling {@link Authorizations.getReceived | authorizations.getReceived}.
     *   Also, an Account or Identity can directly fetch the details of an Authorization Request by calling {@link Authorizations.getOne | authorizations.getOne}
     *
     * @note required role:
     *   - Ticker Owner
     */
    transferOwnership: ProcedureMethod<TransferTickerOwnershipParams, AuthorizationRequest>;
    /**
     * Determine whether this Ticker Reservation exists on chain
     */
    exists(): Promise<boolean>;
    /**
     * Return the Reservation's ticker
     */
    toJson(): string;
}
//# sourceMappingURL=index.d.ts.map