import AugmentedObjectManager, { AugmentedType } from './manager'; import { CompositeElement } from './composite'; import PackedBuffer from '../thunk/packed'; interface MyComposite { p: number; n: number; } declare class MyType implements AugmentedType { readonly name = "pncounter"; isNativeTypeCompatible(x: unknown): x is PNCounterSentinal; createFromExisting(mgr: AugmentedObjectManager, ser: PackedBuffer | PNCounterElement): PNCounterElement; createFromNative(mgr: AugmentedObjectManager, x: PNCounterSentinal): PNCounterElement; } declare const MY_TYPE: MyType; export default MY_TYPE; /** * An element that represents a synchronizable, increment-only counter. */ declare class PNCounterElement extends CompositeElement { get type(): MyType; get boolean(): boolean; get number(): number; valueOf(): any; set(x: unknown): boolean; protected initialize(): void; } declare class PNCounterSentinal { readonly initialCounterValue: number; constructor(initialCounterValue: number); } /** * The way to initialize a new PNCounter, is to call this function and add the result to a collection. * It will "melt away" immediately, appearing like a normal JavaScript number which can be increased or decreased. */ export declare function PNCounter(initialCounterValue?: number): number;