import { u64, Null, Enum, Option, Struct } from '@polkadot/types';
import { ProductId, ProductExtension as IProductExtension, Comment as IComment } from '../interfaces';
export declare class RegularProduct extends Null {
}
export declare class SharedProduct extends u64 {
}
declare type CommentType = {
    parent_id: Option<ProductId>;
    root_product_id: ProductId;
};
export declare class Comment extends Struct implements IComment {
    constructor(value?: CommentType);
    get parent_id(): Option<ProductId>;
    get root_product_id(): ProductId;
}
export declare type ProductExtensionEnum = RegularProduct | IComment | SharedProduct;
declare type ProductExtensionEnumValue = {
    RegularProduct: RegularProduct;
} | {
    SharedProduct: SharedProduct;
} | {
    Comment: IComment;
};
export declare class ProductExtension extends Enum implements IProductExtension {
    constructor(value?: ProductExtensionEnumValue);
    get isComment(): boolean;
    get asComment(): Comment;
    get isRegularProduct(): boolean;
    get isSharedProduct(): boolean;
    get isSharedComment(): boolean;
    get asSharedProduct(): ProductId;
}
export {};
