import { BaseCoin, CoinFeature, KeyCurve, UnderlyingAsset } from './base';
import { BaseNetwork } from './networks';
export interface CantonConstructorOptions {
    id: string;
    fullName: string;
    name: string;
    network: BaseNetwork;
    features: CoinFeature[];
    asset: UnderlyingAsset;
    primaryKeyCurve: KeyCurve;
}
export declare class Canton extends BaseCoin {
    readonly network: BaseNetwork;
    constructor(options: CantonConstructorOptions);
    protected disallowedFeatures(): Set<CoinFeature>;
    protected requiredFeatures(): Set<CoinFeature>;
}
/**
 * Factory function for canton coin instances
 *
 * @param {String} id unique identifier (uuid v4)
 * @param {String} name unique identifier of the coin
 * @param {String} fullName complete human-readable name of the coin
 * @param {BaseNetwork} network network object for this coin
 * @param {UnderlyingAsset} asset asset which this coin represents. This is the same for both mainNet and testNet variants of a coin.
 * @param {CoinFeature[]} features features of this coin. Defaults to the CANTON_DEFAULT_FEATURES defined in `account`
 * @param {KeyCurve} primaryKeyCurve the elliptic curve for this chain/token
 */
export declare function canton(id: string, name: string, fullName: string, network: BaseNetwork, asset: UnderlyingAsset, features: CoinFeature[], primaryKeyCurve?: KeyCurve): Readonly<Canton>;
//# sourceMappingURL=canton.d.ts.map