import { ActivatedRouteSnapshot, ResolveData, Router, RouterStateSnapshot } from '@angular/router'; import { Type } from '@vendure/common/lib/shared-types'; import { Observable } from 'rxjs'; export interface EntityResolveData extends ResolveData { entity: Type>; } export declare function createResolveData, R>(resolver: Type): EntityResolveData; /** * @description * A base resolver for an entity detail route. Resolves to an observable of the given entity, or a "blank" * version if the route id equals "create". Should be used together with details views which extend the * {@link BaseDetailComponent}. * * @example * ```ts * \@Injectable({ * providedIn: 'root', * }) * export class MyEntityResolver extends BaseEntityResolver { * constructor(router: Router, dataService: DataService) { * super( * router, * { * __typename: 'MyEntity', * id: '', * createdAt: '', * updatedAt: '', * name: '', * }, * id => dataService.query(GET_MY_ENTITY, { id }).mapStream(data => data.myEntity), * ); * } * } * ``` * * @docsCategory list-detail-views */ export declare class BaseEntityResolver { protected router: Router; private readonly emptyEntity; private entityStream; constructor(router: Router, emptyEntity: T, entityStream: (id: string) => Observable); /** @internal */ resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable>; }