export interface Weapon { tryHit(fromDistance: number): boolean; } export interface Named { name: string; } export interface Magic { kind: string; } export type MagicDurability = { fire: number; water: number; }; export type Durable = { durability: number; magicDurability: MagicDurability; refresh(): void; }; export interface BlackMagic extends Magic { paintItBlack(): boolean; } export interface MagicWeapon extends Weapon { magic: MT; tryMagicHit(): boolean; } export interface BlackMagicWeapon extends MagicWeapon { } export declare enum Gender { Male = 0, Female = 1, Else = 2 } export interface Attribute { id: string; value: T; description?: string; } export default interface Mountable { mount(): void; unmount(): void; }