## Beta API Report File for "@fluidframework/synthesize"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

// @beta @legacy
export type AsyncFluidObjectProvider<O, R = undefined> = AsyncOptionalFluidObjectProvider<O> & AsyncRequiredFluidObjectProvider<R>;

// @beta @legacy
export type AsyncOptionalFluidObjectProvider<T> = T extends undefined ? Record<string, never> : {
    [P in keyof T]?: Promise<T[P] | undefined>;
};

// @beta @legacy
export type AsyncRequiredFluidObjectProvider<T> = T extends undefined ? Record<string, never> : {
    [P in keyof T]: Promise<NonNullable<Exclude<T[P], undefined | null>>>;
};

// @beta @legacy
export class DependencyContainer<TMap> implements IFluidDependencySynthesizer {
    constructor(...parents: (IFluidDependencySynthesizer | undefined)[]);
    has(type: string, excludeParents?: boolean): boolean;
    // (undocumented)
    get IFluidDependencySynthesizer(): this;
    register<T extends keyof TMap = keyof TMap>(type: T, provider: FluidObjectProvider<Pick<TMap, T>>): void;
    synthesize<O, R = undefined | Record<string, never>>(optionalTypes: FluidObjectSymbolProvider<O>, requiredTypes: Required<FluidObjectSymbolProvider<R>>): AsyncFluidObjectProvider<O, R>;
    unregister(type: keyof TMap): void;
}

// @beta @legacy
export type FluidObjectProvider<T> = NonNullable<T> | Promise<NonNullable<T>> | ((dependencyContainer: IFluidDependencySynthesizer) => NonNullable<T>) | ((dependencyContainer: IFluidDependencySynthesizer) => Promise<NonNullable<T>>);

// @beta @legacy
export type FluidObjectSymbolProvider<T> = {
    [P in keyof T]?: P;
};

// @beta @legacy (undocumented)
export const IFluidDependencySynthesizer: keyof IProvideFluidDependencySynthesizer;

// @beta @legacy
export interface IFluidDependencySynthesizer extends IProvideFluidDependencySynthesizer {
    has(type: string): boolean;
    synthesize<O, R = undefined | Record<string, never>>(optionalTypes: FluidObjectSymbolProvider<O>, requiredTypes: Required<FluidObjectSymbolProvider<R>>): AsyncFluidObjectProvider<O, R>;
}

// @beta @legacy (undocumented)
export interface IProvideFluidDependencySynthesizer {
    // (undocumented)
    IFluidDependencySynthesizer: IFluidDependencySynthesizer;
}

// (No @packageDocumentation comment for this package)

```
