import { AccessoryReference, ReferenceData, RenderMode } from "./common"; /** * Descripes the sharing state that the {@link hostAdaptors.defaultSharingProvider} generates * when a sharing link is opened. * * The `type` property allows for specific type casting. * * @group VSC * @group MDRC */ export type IShareState = /** * This state represents a shared outfit from the VSC carousel screen. It holds the outfit data, * and the collection reference. */ { type: 'pictofit::virtualstyling::outfit'; collection: ReferenceData; outfit: string; } | /** * This state represents a shared custom tryon. It holds the collection reference, * and all other necesary information to reconstruct the outfit. */ { type: 'pictofit::virtualstyling::style'; collection: ReferenceData; avatar: ReferenceData; scene: ReferenceData; garments: Array; accessories: Array; } | /** * This state represents a shared look in the MDRC component. It holds all relevant information * to reconstruct the state of the MDRC. */ { type: 'pictofit::mdrc::look'; mode: RenderMode; avatar?: ReferenceData; scene?: ReferenceData; garments: Array; screenshot?: string; }; /** * A type guarding function for the {@link IShareState}. * * @group VSC * @group MDRC * @param obj The object in question * @returns */ export declare function isIShareState(obj: unknown): obj is IShareState; /** * The mechanism that was used for sharing. */ export type ShareMechanism = 'pictofit::shared::clipboard' | 'pictofit::shared::webapi' | 'pictofit::shared::custom'; /** * This interface can be implemented for a custom sharing behavior, there is no * good reason why this should be customized by an implementor. * * Please see {@link hostAdaptors.SharingProvider} for more details. * * @group VSC * @group MDRC */ export interface ISharingProvider { getSharingLink(cfg: IShareState): Promise; shareLink(link: string): Promise; }