import { AuthorizationRequest, Context, CreateSecurityTokenParams, Entity, SecurityToken, 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 token symbol in the Polymesh chain. 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 a Security Token with it
 */
export declare class TickerReservation extends Entity<UniqueIdentifiers, string> {
    /**
     * @hidden
     * Check if a value is of type [[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 a Security Token.
     *
     * @note required role:
     *   - Ticker Owner
     */
    extend: NoArgsProcedureMethod<TickerReservation>;
    /**
     * Create a Security Token using the reserved ticker
     *
     * @note required role:
     *   - Ticker Owner
     */
    createToken: ProcedureMethod<CreateSecurityTokenParams, SecurityToken>;
    /**
     * 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 [[AuthorizationRequest | Authorization Requests]] which have to be accepted by
     *   the corresponding [[Account | Accounts]] and/or [[Identity | Identities]]. An Account or Identity can
     *   fetch its pending Authorization Requests by calling `authorizations.getReceived`
     *
     * @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