import { ISubmittableResult } from '@polkadot/types/types';
import BigNumber from 'bignumber.js';
import { Context, PostTransactionValue, Procedure, Sto, Venue } from "../../internal";
import { PortfolioLike, StoTier } from "../../types";
import { PortfolioId, ProcedureAuthorization } from "../../types/internal";
/**
 * @hidden
 */
export interface LaunchStoParams {
    /**
     * portfolio in which the Tokens to be sold are stored
     */
    offeringPortfolio: PortfolioLike;
    /**
     * portfolio in which the raised funds will be stored
     */
    raisingPortfolio: PortfolioLike;
    /**
     * ticker symbol of the currency in which the funds are being raised (i.e. 'USD' or 'CAD').
     *   Other Security Tokens can be used as currency as well
     */
    raisingCurrency: string;
    /**
     * venue through which all offering related trades will be settled
     *   (optional, defaults to the first `Sto` type Venue owned by the owner of the Offering Portfolio.
     *   If passed, it must be of type `Sto`)
     */
    venue?: Venue;
    name: string;
    /**
     * start date of the Offering (optional, defaults to right now)
     */
    start?: Date;
    /**
     * end date of the Offering (optional, defaults to never)
     */
    end?: Date;
    /**
     * array of sale tiers. Each tier consists of an amount of Tokens to be sold at a certain price.
     *   Tokens in a tier can only be bought when all Tokens in previous tiers have been bought
     */
    tiers: StoTier[];
    /**
     * minimum amount that can be spent on this offering
     */
    minInvestment: BigNumber;
}
/**
 * @hidden
 */
export declare type Params = LaunchStoParams & {
    ticker: string;
};
/**
 * @hidden
 */
export interface Storage {
    offeringPortfolioId: PortfolioId;
    raisingPortfolioId: PortfolioId;
}
/**
 * @hidden
 */
export declare const createStoResolver: (ticker: string, context: Context) => (receipt: ISubmittableResult) => Sto;
/**
 * @hidden
 */
export declare function prepareLaunchSto(this: Procedure<Params, Sto, Storage>, args: Params): Promise<PostTransactionValue<Sto>>;
/**
 * @hidden
 */
export declare function getAuthorization(this: Procedure<Params, Sto, Storage>, { ticker }: Params): ProcedureAuthorization;
/**
 * @hidden
 */
export declare function prepareStorage(this: Procedure<Params, Sto, Storage>, { offeringPortfolio, raisingPortfolio }: Params): Promise<Storage>;
/**
 * @hidden
 */
export declare const launchSto: () => Procedure<Params, Sto, Storage>;
//# sourceMappingURL=launchSto.d.ts.map