interface Flavoring<Kind extends string> {
    readonly __kind__?: Kind;
}
interface Branding<Base, Kind extends string> {
    readonly __base__: Base;
    readonly __kind__: Kind;
}
type Flavor<Base, Kind extends string> = Base & Flavoring<Kind>;
type Brand<Base, Kind extends string> = Base & Branding<Base, Kind>;
type AnyBrand = Brand<unknown, string>;
type BaseOf<B extends AnyBrand> = B['__base__'];
type Brander<Brand extends AnyBrand> = (value: BaseOf<Brand>) => Brand;
type BrandValidator<Brand extends AnyBrand> = (value: BaseOf<Brand>) => void;
declare function make<Brand extends AnyBrand>(validator?: BrandValidator<Brand>): Brander<Brand>;
export type { Flavor, Brand, Brander };
export { make };
