UNPKG

differential-privacy

Version:

Implements Global Differential Privacy for almost any numeric function

32 lines (31 loc) 1.78 kB
export interface PrivatizeOptions<DATASET> { maxEpsilon: number; newShadowIterator: NewShadowDatasetIterator<DATASET>; maxCallCount?: number; maxConcurrentCalls?: number; debugDangerously?: boolean; } export declare type IteratorValue<DATASET> = DATASET | undefined; export declare type SubsetIterator<DATASET> = Iterator<DATASET | undefined> | Iterator<Promise<DATASET | undefined>> | Promise<Iterator<DATASET | undefined>> | Promise<Iterator<Promise<DATASET | undefined>>>; export declare type NewShadowDatasetIterator<DATASET> = (originalDataset: DATASET) => SubsetIterator<DATASET>; export interface PrivatizedResult { result: number; epsilonBudgetUsed: number; percentBudgetUsed: number; } export interface DangerousResult extends PrivatizedResult { privateResult: number; noiseAdded: number; } export interface DangerousOptions { debugDangerously: true; } export declare type PrivatizedFunctionResult<OPTIONS extends PrivatizeOptions<any>> = OPTIONS extends DangerousOptions ? DangerousResult : PrivatizedResult; export declare type PrivatizedFunction<DATASET, PFR extends PrivatizedResult> = (datastore: DATASET) => Promise<PFR>; export declare type Privatizer<DATASET, OPTIONS extends PrivatizeOptions<DATASET>> = (sensitiveFunction: SensitiveFunction<DATASET>, options: OPTIONS) => PrivatizedFunction<DATASET, PrivatizedFunctionResult<OPTIONS>>; export declare type SensitiveSyncFunction<D> = (dataset: D) => number; export declare type SensitiveAsyncFunction<D> = (dataset: D) => Promise<number>; export declare type SensitiveFunction<D> = SensitiveSyncFunction<D> | SensitiveAsyncFunction<D>; export declare type SensitiveOutput = number | Promise<number>; export declare class PrivacyBudgetExceededError extends Error { }