import { Bytes } from '@polkadot/types';
import { ISubmittableResult } from '@polkadot/types/types';
import BigNumber from 'bignumber.js';
import { AssetType, CustomAssetTypeId } from "../../polkadot/types";
import { Asset, Context, Procedure } from "../../internal";
import { AssetDocument, SecurityIdentifier, TickerReservationStatus } from "../../types";
import { ProcedureAuthorization } from "../../types/internal";
/**
 * @hidden
 */
export declare const createRegisterCustomAssetTypeResolver: (context: Context) => (receipt: ISubmittableResult) => AssetType;
export interface CreateAssetParams {
    name: string;
    /**
     * amount of Asset tokens that will be minted on creation (optional, default doesn't mint)
     */
    initialSupply?: BigNumber;
    /**
     * whether a single Asset token can be divided into decimal parts
     */
    isDivisible: boolean;
    /**
     * type of security that the Asset represents (i.e. Equity, Debt, Commodity, etc). Common values are included in the
     *   [[KnownSecurityType]] enum, but custom values can be used as well. Custom values must be registered on-chain the first time
     *   they're used, requiring an additional transaction. They aren't tied to a specific Asset
     */
    assetType: string;
    /**
     * array of domestic or international alphanumeric security identifiers for the Asset (ISIN, CUSIP, etc)
     */
    securityIdentifiers?: SecurityIdentifier[];
    /**
     * (optional) funding round in which the Asset currently is (Series A, Series B, etc)
     */
    fundingRound?: string;
    documents?: AssetDocument[];
    /**
     * whether this asset requires investors to have a Investor Uniqueness Claim in order
     *   to hold it. More information about Investor Uniqueness and PUIS [here](https://developers.polymesh.live/introduction/identity#polymesh-unique-identity-system-puis)
     */
    requireInvestorUniqueness: boolean;
}
export interface CreateAssetWithTickerParams extends CreateAssetParams {
    ticker: string;
}
/**
 * @hidden
 */
export declare type Params = CreateAssetWithTickerParams & {
    reservationRequired: boolean;
};
/**
 * @hidden
 */
export interface Storage {
    /**
     * fetched custom asset type ID and raw value in bytes. If `id.isEmpty`, then the type should be registered. A
     *   null value means the type is not custom
     */
    customTypeData: {
        id: CustomAssetTypeId;
        rawValue: Bytes;
    } | null;
    status: TickerReservationStatus;
}
/**
 * @hidden
 */
export declare function prepareCreateAsset(this: Procedure<Params, Asset, Storage>, args: Params): Promise<Asset>;
/**
 * @hidden
 */
export declare function getAuthorization(this: Procedure<Params, Asset, Storage>, { ticker, documents }: Params): Promise<ProcedureAuthorization>;
/**
 * @hidden
 */
export declare function prepareStorage(this: Procedure<Params, Asset, Storage>, { ticker, assetType }: Params): Promise<Storage>;
/**
 * @hidden
 */
export declare const createAsset: () => Procedure<Params, Asset, Storage>;
//# sourceMappingURL=createAsset.d.ts.map