import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { Brand } from '@paradoxical-io/types'; import { Monitoring } from '../../monitoring'; import { DynamoDao } from '../mapper'; import { DynamoTableName } from '../util'; type KeyValueNamespace = Brand; export declare class KeyValueCountTableDao implements DynamoDao { key: KeyValueNamespace; count: number; } export interface KeyCount { id: K; count?: number; } export declare class KeyValueScopedCounter { private key; private counter; constructor(key: (d: K) => string, counter: KeyValueCounter); reset(key: K): Promise; get(ids: K[]): Promise>>; current(key: K): Promise; inc(key: K, by?: number): Promise; decr(key: K): Promise; } /** * An atomic key value counter */ export declare class KeyValueCounter { private readonly dynamo; private readonly namespace; private readonly tableName; private readonly logger; constructor({ namespace, dynamo, tableName, monitoring, }: { namespace: string; dynamo?: DynamoDBClient; tableName: DynamoTableName; monitoring?: Monitoring; }); get(ids: K[]): Promise>>; incr(id: K, by?: number): Promise; decr(id: K, by?: number): Promise; delete(id: K): Promise; private key; private getRaw; private incrRaw; private deleteRaw; } export {}; //# sourceMappingURL=keyValueCounter.d.ts.map