Skip to main content

Interface: IRuntimeState

Defined in: src/state/types.ts:19

Properties​

authStatus​

authStatus: string

Defined in: src/state/types.ts:35

Host auth lifecycle status — follows growth-rc's values: "pending", "done", "resolved", "failed". Treat "resolved" and "failed" as settled; "done" means the refresh-token returned but the user fetch is still in flight.


authToken​

authToken: string

Defined in: src/state/types.ts:37

Current bearer token (empty string when no session).


context​

context: Required<Omit<{ action?: ITransferReplayAction; credits?: { areCreditsAvailable?: boolean; areCreditsFetched?: boolean; areCreditsLoading?: boolean; creditsInfo?: { addonCredits: number; credits: number; period: "daily" | "weekly" | "monthly" | "yearly" | "permanent" | "trial"; renewDate?: string; tierCredits: number; } | null; isShownCreditsInfoCard?: boolean; isShownCreditsTooltip?: boolean; toolId?: string; }; headers: Record<string, string>; isPremium?: boolean; language: "id" | "en" | "zh" | "zh_HANT" | "fr" | "de" | "hi" | "it" | "ko" | "pl" | "pt" | "ru" | "ja" | "es" | "th" | "tr" | "vi"; launchParams?: Record<string, unknown>; location: { pathname: string; search: string; }; mediaPlayer?: DeepPartial<IMediaPlayerState>; project?: { id: string; name?: string; }; selectedCanvasId?: string; selectedLayerIds?: string[]; settings?: Pick<IReplaySettings, "experience">; sharedStorage: string; textSelection?: { end: number; start: number; }; theme: "light" | "dark"; user?: { accountType?: string; created?: string; id?: number; isNew?: boolean; key?: string; registered?: boolean; username?: string; verifiedType?: string; }; userSubscription?: { expirationDate?: string; isSubscribed: boolean; isTrialLimitReached?: boolean; isUnderFreeTrial?: boolean; status?: string; subscriptionPeriod?: string; tierId: string; tiersAvailability?: boolean; }; }, PropertiesWithoutDefaultState>> & Pick<{ action?: ITransferReplayAction; credits?: { areCreditsAvailable?: boolean; areCreditsFetched?: boolean; areCreditsLoading?: boolean; creditsInfo?: { addonCredits: number; credits: number; period: "daily" | "weekly" | "monthly" | "yearly" | "permanent" | "trial"; renewDate?: string; tierCredits: number; } | null; isShownCreditsInfoCard?: boolean; isShownCreditsTooltip?: boolean; toolId?: string; }; headers: Record<string, string>; isPremium?: boolean; language: "id" | "en" | "zh" | "zh_HANT" | "fr" | "de" | "hi" | "it" | "ko" | "pl" | "pt" | "ru" | "ja" | "es" | "th" | "tr" | "vi"; launchParams?: Record<string, unknown>; location: { pathname: string; search: string; }; mediaPlayer?: DeepPartial<IMediaPlayerState>; project?: { id: string; name?: string; }; selectedCanvasId?: string; selectedLayerIds?: string[]; settings?: Pick<IReplaySettings, "experience">; sharedStorage: string; textSelection?: { end: number; start: number; }; theme: "light" | "dark"; user?: { accountType?: string; created?: string; id?: number; isNew?: boolean; key?: string; registered?: boolean; username?: string; verifiedType?: string; }; userSubscription?: { expirationDate?: string; isSubscribed: boolean; isTrialLimitReached?: boolean; isUnderFreeTrial?: boolean; status?: string; subscriptionPeriod?: string; tierId: string; tiersAvailability?: boolean; }; }, PropertiesWithoutDefaultState>

Defined in: src/state/types.ts:55

SDK-facing transfer context — the only slice shared with the miniapp. Typed as ITransferContext but with optional fields promoted to required, so defaultState.context must carry a value (even undefined) for every key. This keeps the host and miniapp panels comparable key-for-key at boot.

Some fields stay genuinely optional: textSelection and action are transient per-event payloads, not steady state — they appear on the wire only during a dispatch and clear after. launchParams has no non-undefined default either — the SDK initialises its model to undefined until the host provides params at open, so mirroring that keeps the t=0 panels identical.


error​

error: Error | null

Defined in: src/state/types.ts:25

The most recent error from load/bootstrap, or null


isBootstrapped​

isBootstrapped: boolean

Defined in: src/state/types.ts:23

Whether at least one miniapp has successfully bootstrapped


isLoading​

isLoading: boolean

Defined in: src/state/types.ts:21

Whether a miniapp is currently being loaded


noNetwork​

noNetwork: boolean

Defined in: src/state/types.ts:27

Whether the device is offline (no network connectivity)


pulseTrackingState​

pulseTrackingState: string

Defined in: src/state/types.ts:39

Pulse tracking consent state.