differential-privacy
Version:
Implements Global Differential Privacy for almost any numeric function
32 lines (31 loc) • 1.78 kB
TypeScript
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 {
}