igpapi — Instagram private API Simulator for Node.js (API reference) 4.14.0
    Preparing search index...

    Interface PostingCameraScreenDefinition

    The camera's definition type, named: the Reels viewer's and the feed's tab stacks carry this screen's type, and inlining it would exceed the compiler's declaration-serialization limit (the same reason ReelsViewerScreenDefinition is named). An interface, not an alias, so declaration emit prints its name.

    interface PostingCameraScreenDefinition {
        "~top"?: ScreenTopLevelMarker<never>;
        actions: {
            openGallery: (
                self: ScreenHandle,
                state: PostingCameraState,
            ) => (
                ...args: [],
            ) => Effect<
                PostingCameraGalleryHandle,
                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError
                | ScreenDataError
                | ScreenEnterConcurrentError
                | ScreenEdgeInputError,
                | MobileSession
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
            switchMode: (
                self: ScreenHandle,
                state: PostingCameraState,
            ) => ScreenEdgeBound<
                ScreenEdgeShape<
                    PostingCameraScreenDefinition,
                    readonly ["story"],
                    "button",
                    AndroidScreens,
                >,
                (
                    mode: "story",
                ) => Effect<
                    AssembledHandle<
                        "PostingCamera",
                        "screen",
                        {
                            cameraSessionId: string;
                            entry: | "reels-tab"
                            | "gallery-picker"
                            | "feed-button"
                            | "camera-switch";
                            mode: "reel"
                            | "story";
                            origin: "feed" | "reels-tab";
                        },
                        (
                            { openGallery: (self: ScreenHandle, state: PostingCameraState) => () => Effect<PostingCameraGalleryHandle, IgCheckpointError | ... 6 more ... | ScreenEdgeInputError, MobileSession | ... 6 more ... | AndroidPostingMedia>; switchMode: (self: ScreenHandle, state: PostingCameraState) => ScreenEdgeBound<...>; }
                        ),
                        Record<never, never>,
                        ScreenHandle,
                        "required",
                        true,
                        never,
                        AndroidScreens,
                    >,

                        | IgCheckpointError
                        | IgAccountSuspendedError
                        | IgAccountDisabledError
                        | IgLoginRequiredError
                        | IgUserLoggedOutError
                        | ScreenDataError
                        | ScreenEnterConcurrentError
                        | ScreenEdgeInputError,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | ScreenStack
                    | ScreenCatalog
                    | AndroidPostingMedia,
                >,
            >;
        };
        afterAssemble: | ((handle: ScreenHandle) => Effect<void, never, never>)
        | undefined;
        beforeLeave?: (
            left: ScreenBeforeLeave<
                {
                    entry: | "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel"
                    | "story";
                    origin: "feed" | "reels-tab";
                },
                {
                    cameraSessionId: string;
                    entry: "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel" | "story";
                    origin: "feed" | "reels-tab";
                },
                PostingCameraState,
            >,
        ) => Effect<
            void,
            never,
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidPostingMedia,
        >;
        beforeResume?: (
            returning: ScreenBeforeResume<
                {
                    entry: | "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel"
                    | "story";
                    origin: "feed" | "reels-tab";
                },
                {
                    cameraSessionId: string;
                    entry: "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel" | "story";
                    origin: "feed" | "reels-tab";
                },
                PostingCameraState,
            >,
        ) => Effect<
            void,
            never,
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidPostingMedia,
        >;
        catalogEntry: () => ScreenCatalogEntry<
            ScreenStepFailure<
                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError,
                Record<never, never>,
            >,
            ScreenStepServices<
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidPostingMedia,
                Record<never, never>,
            >,
        >;
        checkpointExtra: (
            handle: ScreenHandle,
        ) => Effect<Json | undefined, SchemaError>;
        data: ScreenCodec<
            {
                cameraSessionId: string;
                entry: "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel" | "story";
                origin: "feed" | "reels-tab";
            },
        >;
        enter: (
            args: ScreenEnter<
                {
                    entry: | "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel"
                    | "story";
                    origin: "feed" | "reels-tab";
                },
            >,
        ) => Effect<
            {
                cameraSessionId: string;
                entry: "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel" | "story";
                origin: "feed" | "reels-tab";
            },
            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError,
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidPostingMedia,
        >;
        findItem: (
            host: ScreenHandle,
            item: ScreenItemLocation,
        ) => Effect<
            ScreenHandle
            | undefined,
            ScreenLookupFailure<
                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError,
                Record<never, never>,
            >,
            ScreenStepServices<
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidPostingMedia,
                Record<never, never>,
            >,
        >;
        id: "PostingCamera";
        input: ScreenCodec<
            {
                entry: | "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel"
                | "story";
                origin: "feed" | "reels-tab";
            },
            ScreenEncodedInput,
        >;
        is: (
            value: unknown,
        ) => value is AssembledHandle<
            "PostingCamera",
            "screen",
            {
                cameraSessionId: string;
                entry: "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel" | "story";
                origin: "feed" | "reels-tab";
            },
            {
                openGallery: (
                    self: ScreenHandle,
                    state: PostingCameraState,
                ) => (
                    ...args: [],
                ) => Effect<
                    PostingCameraGalleryHandle,
                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                    | MobileSession
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | ScreenStack
                    | ScreenCatalog
                    | AndroidPostingMedia,
                >;
                switchMode: (
                    self: ScreenHandle,
                    state: PostingCameraState,
                ) => ScreenEdgeBound<
                    ScreenEdgeShape<
                        PostingCameraScreenDefinition,
                        readonly ["story"],
                        "button",
                        AndroidScreens,
                    >,
                    (
                        mode: "story",
                    ) => Effect<
                        AssembledHandle<
                            "PostingCamera",
                            "screen",
                            {
                                cameraSessionId: string;
                                entry: | "reels-tab"
                                | "gallery-picker"
                                | "feed-button"
                                | "camera-switch";
                                mode: "reel"
                                | "story";
                                origin: "feed" | "reels-tab";
                            },
                            (
                                { openGallery: (self: ScreenHandle, state: PostingCameraState) => () => Effect<PostingCameraGalleryHandle, IgCheckpointError | ... 6 more ... | ScreenEdgeInputError, MobileSession | ... 6 more ... | AndroidPostingMedia>; switchMode: (self: ScreenHandle, state: PostingCameraState) => ScreenEdgeBound<...>; }
                            ),
                            Record<never, never>,
                            ScreenHandle,
                            "required",
                            true,
                            never,
                            AndroidScreens,
                        >,

                            | IgCheckpointError
                            | IgAccountSuspendedError
                            | IgAccountDisabledError
                            | IgLoginRequiredError
                            | IgUserLoggedOutError
                            | ScreenDataError
                            | ScreenEnterConcurrentError
                            | ScreenEdgeInputError,
                        | PlainJsonApiHttp
                        | Signature
                        | MobileSession
                        | MobileDevice
                        | GraphqlJsonHttp
                        | MobileApplication
                        | MobileNavigation
                        | MobileUserFlows
                        | ScreenStack
                        | ScreenCatalog
                        | AndroidPostingMedia,
                    >,
                >;
            },
            Record<never, never>,
            ScreenHandle | undefined,
            "optional",
            true,
            never,
            unknown,
        >;
        items: Record<never, never> | undefined;
        itemVisits: boolean;
        kind: "screen";
        leave:
            | (
                (
                    left: ScreenLeave<
                        {
                            entry: | "reels-tab"
                            | "gallery-picker"
                            | "feed-button"
                            | "camera-switch";
                            mode: "reel"
                            | "story";
                            origin: "feed" | "reels-tab";
                        },
                        {
                            cameraSessionId: string;
                            entry: | "reels-tab"
                            | "gallery-picker"
                            | "feed-button"
                            | "camera-switch";
                            mode: "reel"
                            | "story";
                            origin: "feed" | "reels-tab";
                        },
                        PostingCameraState,
                    >,
                ) => Effect<
                    void,
                    never,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | AndroidPostingMedia,
                >
            )
            | undefined;
        ownsCheckpoint: OwnsCheckpoint<"PostingCamera">;
        positionOf: (handle: ScreenHandle) => Json | undefined;
        readReleased?: ScreenReleasedReader;
        readReleasedInput?: ScreenReleasedInputReader;
        releasedItemLists: Readonly<Record<string, string>>;
        restoreCheckpointExtra: (
            handle: ScreenHandle,
            extra: Json,
        ) => Effect<
            void,
            ScreenDataError
            | CheckpointDecodeError,

                | ScreenStack
                | ScreenStepServices<
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | AndroidPostingMedia,
                    Record<never, never>,
                >,
        >;
        restorePosition: (
            handle: ScreenHandle,
            position: Json,
        ) => Effect<
            void,
            ScreenLookupFailure<
                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError,
                Record<never, never>,
            >,
            ScreenStepServices<
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidPostingMedia,
                Record<never, never>,
            >,
        >;
        resume:
            | (
                (
                    resumed: ScreenResume<
                        {
                            entry: | "reels-tab"
                            | "gallery-picker"
                            | "feed-button"
                            | "camera-switch";
                            mode: "reel"
                            | "story";
                            origin: "feed" | "reels-tab";
                        },
                        {
                            cameraSessionId: string;
                            entry: | "reels-tab"
                            | "gallery-picker"
                            | "feed-button"
                            | "camera-switch";
                            mode: "reel"
                            | "story";
                            origin: "feed" | "reels-tab";
                        },
                        PostingCameraState,
                    >,
                ) => Effect<
                    void,
                    never,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | AndroidPostingMedia,
                >
            )
            | undefined;
        state: (
            opened: ScreenStateArgs<
                {
                    entry: | "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel"
                    | "story";
                    origin: "feed" | "reels-tab";
                },
                {
                    cameraSessionId: string;
                    entry: "reels-tab"
                    | "gallery-picker"
                    | "feed-button"
                    | "camera-switch";
                    mode: "reel" | "story";
                    origin: "feed" | "reels-tab";
                },
                undefined,
            >,
        ) => PostingCameraState;
        "~opens"?(target: never): void;
        pipe<A>(this: A): A;
        pipe<A, B = never>(this: A, ab: (_: A) => B): B;
        pipe<A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C;
        pipe<A, B = never, C = never, D = never>(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
        ): D;
        pipe<A, B = never, C = never, D = never, E = never>(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
        ): E;
        pipe<A, B = never, C = never, D = never, E = never, F = never>(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
        ): F;
        pipe<A, B = never, C = never, D = never, E = never, F = never, G = never>(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
        ): G;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
        ): H;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
        ): I;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
        ): J;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
        ): K;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
        ): L;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
        ): M;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
        ): N;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
        ): O;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
        ): P;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
            Q = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
            pq: (_: P) => Q,
        ): Q;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
            Q = never,
            R = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
            pq: (_: P) => Q,
            qr: (_: Q) => R,
        ): R;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
            Q = never,
            R = never,
            S = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
            pq: (_: P) => Q,
            qr: (_: Q) => R,
            rs: (_: R) => S,
        ): S;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
            Q = never,
            R = never,
            S = never,
            T = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
            pq: (_: P) => Q,
            qr: (_: Q) => R,
            rs: (_: R) => S,
            st: (_: S) => T,
        ): T;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
            Q = never,
            R = never,
            S = never,
            T = never,
            U = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
            pq: (_: P) => Q,
            qr: (_: Q) => R,
            rs: (_: R) => S,
            st: (_: S) => T,
            tu: (_: T) => U,
        ): U;
        pipe<
            A,
            B = never,
            C = never,
            D = never,
            E = never,
            F = never,
            G = never,
            H = never,
            I = never,
            J = never,
            K = never,
            L = never,
            M = never,
            N = never,
            O = never,
            P = never,
            Q = never,
            R = never,
            S = never,
            T = never,
            U = never,
        >(
            this: A,
            ab: (_: A) => B,
            bc: (_: B) => C,
            cd: (_: C) => D,
            de: (_: D) => E,
            ef: (_: E) => F,
            fg: (_: F) => G,
            gh: (_: G) => H,
            hi: (_: H) => I,
            ij: (_: I) => J,
            jk: (_: J) => K,
            kl: (_: K) => L,
            lm: (_: L) => M,
            mn: (_: M) => N,
            no: (_: N) => O,
            op: (_: O) => P,
            pq: (_: P) => Q,
            qr: (_: Q) => R,
            rs: (_: R) => S,
            st: (_: S) => T,
            tu: (_: T) => U,
        ): U;
    }

    Hierarchy

    • ReturnType<typeof postingCameraScreen>
      • PostingCameraScreenDefinition
    Index

    Methods

    • Type only, never a value: the screens this definition opens through action edges — edges its handle does not show (actionEdge) — so ScreenOpenTargetsOf follows them and a screen reached only that way is still visible to the registry-derived reachability. The parameter is bivariant (a method's is), so a definition that names its targets is still accepted wherever a definition's parts are read; never for a definition whose transitions all live on its handle.

      Parameters

      • target: never

      Returns void

    • Type Parameters

      • A

      Parameters

      • this: A

      Returns A

    • Type Parameters

      • A
      • B = never

      Parameters

      • this: A
      • ab: (_: A) => B

      Returns B

    • Type Parameters

      • A
      • B = never
      • C = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C

      Returns C

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D

      Returns D

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E

      Returns E

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F

      Returns F

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G

      Returns G

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H

      Returns H

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I

      Returns I

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J

      Returns J

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K

      Returns K

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L

      Returns L

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M

      Returns M

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N

      Returns N

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O

      Returns O

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P

      Returns P

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q

      Returns Q

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R

      Returns R

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S

      Returns S

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never
      • T = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S
      • st: (_: S) => T

      Returns T

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never
      • T = never
      • U = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S
      • st: (_: S) => T
      • tu: (_: T) => U

      Returns U

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never
      • T = never
      • U = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S
      • st: (_: S) => T
      • tu: (_: T) => U

      Returns U

    Properties

    "~top"?: ScreenTopLevelMarker<never>

    The data fields the handle also shows on its top level: the screen's one main identifier (identity), or none. A type only, never set.

    actions: {
        openGallery: (
            self: ScreenHandle,
            state: PostingCameraState,
        ) => (
            ...args: [],
        ) => Effect<
            PostingCameraGalleryHandle,
            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError
            | ScreenDataError
            | ScreenEnterConcurrentError
            | ScreenEdgeInputError,
            | MobileSession
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | ScreenStack
            | ScreenCatalog
            | AndroidPostingMedia,
        >;
        switchMode: (
            self: ScreenHandle,
            state: PostingCameraState,
        ) => ScreenEdgeBound<
            ScreenEdgeShape<
                PostingCameraScreenDefinition,
                readonly ["story"],
                "button",
                AndroidScreens,
            >,
            (
                mode: "story",
            ) => Effect<
                AssembledHandle<
                    "PostingCamera",
                    "screen",
                    {
                        cameraSessionId: string;
                        entry: "reels-tab"
                        | "gallery-picker"
                        | "feed-button"
                        | "camera-switch";
                        mode: "reel" | "story";
                        origin: "feed" | "reels-tab";
                    },
                    (
                        { openGallery: (self: ScreenHandle, state: PostingCameraState) => () => Effect<PostingCameraGalleryHandle, IgCheckpointError | ... 6 more ... | ScreenEdgeInputError, MobileSession | ... 6 more ... | AndroidPostingMedia>; switchMode: (self: ScreenHandle, state: PostingCameraState) => ScreenEdgeBound<...>; }
                    ),
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >,
        >;
    }

    Type Declaration

    afterAssemble:
        | ((handle: ScreenHandle) => Effect<void, never, never>)
        | undefined

    What runs once the screen's handle is assembled, inside the enter's transaction: a swipeable feed gives the first item in front its enter here, because its items were shown without one. Absent for every screen and every plain feed. A failure rolls the enter back.

    beforeLeave?: (
        left: ScreenBeforeLeave<
            {
                entry: | "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel"
                | "story";
                origin: "feed" | "reels-tab";
            },
            {
                cameraSessionId: string;
                entry: "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel" | "story";
                origin: "feed" | "reels-tab";
            },
            PostingCameraState,
        >,
    ) => Effect<
        void,
        never,
        | PlainJsonApiHttp
        | Signature
        | MobileSession
        | MobileDevice
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation
        | MobileUserFlows
        | AndroidPostingMedia,
    >

    What the engine runs when a transition is about to cover or close the screen, while its chain and endpoint are still in front: the app's departure work that goes out before the covering screen's burst. A screen and a feed declare it (an item does not). It receives the visit in progress, cannot fail, and runs before the transition and before leave.

    beforeResume?: (
        returning: ScreenBeforeResume<
            {
                entry: | "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel"
                | "story";
                origin: "feed" | "reels-tab";
            },
            {
                cameraSessionId: string;
                entry: "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel" | "story";
                origin: "feed" | "reels-tab";
            },
            PostingCameraState,
        >,
    ) => Effect<
        void,
        never,
        | PlainJsonApiHttp
        | Signature
        | MobileSession
        | MobileDevice
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation
        | MobileUserFlows
        | AndroidPostingMedia,
    >

    What the engine runs when a transition is about to bring the screen back on top (a tab tap back to it, the covering screen's back), while the screen in front still has its chain and endpoint: the app's tap-time work, the counterpart of the first show's burst before its own navigation event. Only a screen declares it. It cannot fail, and runs before the transition and before resume.

    catalogEntry: () => ScreenCatalogEntry<
        ScreenStepFailure<
            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError,
            Record<never, never>,
        >,
        ScreenStepServices<
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidPostingMedia,
            Record<never, never>,
        >,
    >

    The retrace's view of this screen, with its errors and services.

    checkpointExtra: (handle: ScreenHandle) => Effect<Json | undefined, SchemaError>

    What a frame keeps beyond what entering it showed (a feed's deepest page), as a checkpoint stores it; absent when the screen keeps nothing.

    data: ScreenCodec<
        {
            cameraSessionId: string;
            entry: "reels-tab"
            | "gallery-picker"
            | "feed-button"
            | "camera-switch";
            mode: "reel" | "story";
            origin: "feed" | "reels-tab";
        },
    >

    What enter returns: the user's data, under the handle's data; never in a trail.

    enter: (
        args: ScreenEnter<
            {
                entry: | "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel"
                | "story";
                origin: "feed" | "reels-tab";
            },
        >,
    ) => Effect<
        {
            cameraSessionId: string;
            entry: "reels-tab"
            | "gallery-picker"
            | "feed-button"
            | "camera-switch";
            mode: "reel" | "story";
            origin: "feed" | "reels-tab";
        },
        | IgCheckpointError
        | IgAccountSuspendedError
        | IgAccountDisabledError
        | IgLoginRequiredError
        | IgUserLoggedOutError,
        | PlainJsonApiHttp
        | Signature
        | MobileSession
        | MobileDevice
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation
        | MobileUserFlows
        | AndroidPostingMedia,
    >
    findItem: (
        host: ScreenHandle,
        item: ScreenItemLocation,
    ) => Effect<
        ScreenHandle
        | undefined,
        ScreenLookupFailure<
            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError,
            Record<never, never>,
        >,
        ScreenStepServices<
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidPostingMedia,
            Record<never, never>,
        >,
    >
    id: "PostingCamera"
    input: ScreenCodec<
        {
            entry: "reels-tab"
            | "gallery-picker"
            | "feed-button"
            | "camera-switch";
            mode: "reel" | "story";
            origin: "feed" | "reels-tab";
        },
        ScreenEncodedInput,
    >

    What an edge passes to enter — for an item, the schema of one list entry.

    is: (
        value: unknown,
    ) => value is AssembledHandle<
        "PostingCamera",
        "screen",
        {
            cameraSessionId: string;
            entry: "reels-tab"
            | "gallery-picker"
            | "feed-button"
            | "camera-switch";
            mode: "reel" | "story";
            origin: "feed" | "reels-tab";
        },
        {
            openGallery: (
                self: ScreenHandle,
                state: PostingCameraState,
            ) => (
                ...args: [],
            ) => Effect<
                PostingCameraGalleryHandle,
                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError
                | ScreenDataError
                | ScreenEnterConcurrentError
                | ScreenEdgeInputError,
                | MobileSession
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | ScreenStack
                | ScreenCatalog
                | AndroidPostingMedia,
            >;
            switchMode: (
                self: ScreenHandle,
                state: PostingCameraState,
            ) => ScreenEdgeBound<
                ScreenEdgeShape<
                    PostingCameraScreenDefinition,
                    readonly ["story"],
                    "button",
                    AndroidScreens,
                >,
                (
                    mode: "story",
                ) => Effect<
                    AssembledHandle<
                        "PostingCamera",
                        "screen",
                        {
                            cameraSessionId: string;
                            entry: | "reels-tab"
                            | "gallery-picker"
                            | "feed-button"
                            | "camera-switch";
                            mode: "reel"
                            | "story";
                            origin: "feed" | "reels-tab";
                        },
                        (
                            { openGallery: (self: ScreenHandle, state: PostingCameraState) => () => Effect<PostingCameraGalleryHandle, IgCheckpointError | ... 6 more ... | ScreenEdgeInputError, MobileSession | ... 6 more ... | AndroidPostingMedia>; switchMode: (self: ScreenHandle, state: PostingCameraState) => ScreenEdgeBound<...>; }
                        ),
                        Record<never, never>,
                        ScreenHandle,
                        "required",
                        true,
                        never,
                        AndroidScreens,
                    >,

                        | IgCheckpointError
                        | IgAccountSuspendedError
                        | IgAccountDisabledError
                        | IgLoginRequiredError
                        | IgUserLoggedOutError
                        | ScreenDataError
                        | ScreenEnterConcurrentError
                        | ScreenEdgeInputError,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | ScreenStack
                    | ScreenCatalog
                    | AndroidPostingMedia,
                >,
            >;
        },
        Record<never, never>,
        ScreenHandle | undefined,
        "optional",
        true,
        never,
        unknown,
    >

    Whether value is this screen's handle: the narrowing of a union of handles — what back returns (the screens that can open the screen), or the launch's first-screen union — written XxxScreen.is(handle) (owner decision, 2026-10-23: the guard is a method of the definition, not a free function).

    items: Record<never, never> | undefined

    Absent when the screen shows no item lists.

    itemVisits: boolean

    Whether the items of its lists have visits (leave, resume): a plain feed's have none.

    kind: "screen"
    leave:
        | (
            (
                left: ScreenLeave<
                    {
                        entry: | "reels-tab"
                        | "gallery-picker"
                        | "feed-button"
                        | "camera-switch";
                        mode: "reel"
                        | "story";
                        origin: "feed" | "reels-tab";
                    },
                    {
                        cameraSessionId: string;
                        entry: "reels-tab"
                        | "gallery-picker"
                        | "feed-button"
                        | "camera-switch";
                        mode: "reel" | "story";
                        origin: "feed" | "reels-tab";
                    },
                    PostingCameraState,
                >,
            ) => Effect<
                void,
                never,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidPostingMedia,
            >
        )
        | undefined

    What the engine runs each time the thing stops being on top — covered by another screen, closed, or left by a tab switch — after the transition that did it committed. It receives the visit that ended, with its duration by the engine's clock. It cannot fail; absent when the thing does nothing then.

    ownsCheckpoint: OwnsCheckpoint<"PostingCamera">

    Whether checkpoint is this screen's, read synchronously from the id it carries, from the object or from its JSON text (owner decision, 2026-10-24: the caller never parses before the call). A type guard for the object form, so after it the platform's restores of this screen (AndroidIgpapi.resumeSilently({ checkpoint, screen: XxxScreen, … })) cannot refuse with a mismatch; a string answers a plain boolean. A corrupt checkpoint still fails them with CheckpointDecodeError.

    The restores themselves are the platform's: they build the process from the checkpoint, so they are installed on the definition by the platform package, and the platform's type of the definition carries them (owner decision, 2026-10-24).

    positionOf: (handle: ScreenHandle) => Json | undefined

    Where the screen's frame is beyond what entering shows (a feed's deepest page shown), for a trail; absent when nowhere beyond.

    readReleased?: ScreenReleasedReader

    How a checkpoint written by an earlier release is read into this screen: the stored input and data, in the shape that release gave them, become the current stored shape before the definition's schemas decode them. A field the release wrote and the screen no longer holds is read with a schema of its own and mapped into where its fact lives now, or dropped with a logged StoredSnapshotFieldDropped; it never fails the restore (“Stored snapshots of earlier releases”). Absent on a screen whose stored shape never changed; a frame already in the current shape passes through it unchanged.

    readReleasedInput?: ScreenReleasedInputReader

    The same reading for an input stored alone — a trail's root and steps, the process's root: the input of an earlier release, read into the current stored shape before the screen's input schema decodes it.

    releasedItemLists: Readonly<Record<string, string>>

    The names a released trail format gave this screen's item lists, mapped to the current ones (a feed's items were page in formats 1 and 2): a retrace of a released trail reads a step's list through it.

    restoreCheckpointExtra: (
        handle: ScreenHandle,
        extra: Json,
    ) => Effect<
        void,
        ScreenDataError
        | CheckpointDecodeError,

            | ScreenStack
            | ScreenStepServices<
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidPostingMedia,
                Record<never, never>,
            >,
    >

    Puts that back into a handle a checkpoint rebuilt, before any action runs.

    restorePosition: (
        handle: ScreenHandle,
        position: Json,
    ) => Effect<
        void,
        ScreenLookupFailure<
            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError,
            Record<never, never>,
        >,
        ScreenStepServices<
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidPostingMedia,
            Record<never, never>,
        >,
    >

    Brings a fresh frame back to a position a trail stored, sending what the app sends to get there.

    resume:
        | (
            (
                resumed: ScreenResume<
                    {
                        entry: | "reels-tab"
                        | "gallery-picker"
                        | "feed-button"
                        | "camera-switch";
                        mode: "reel"
                        | "story";
                        origin: "feed" | "reels-tab";
                    },
                    {
                        cameraSessionId: string;
                        entry: "reels-tab"
                        | "gallery-picker"
                        | "feed-button"
                        | "camera-switch";
                        mode: "reel" | "story";
                        origin: "feed" | "reels-tab";
                    },
                    PostingCameraState,
                >,
            ) => Effect<
                void,
                never,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidPostingMedia,
            >
        )
        | undefined

    What the engine runs each time the thing is on top again after a leave — the screen that covered it was closed — after that transition committed. Never on the first show (that is enter), never after a rolled-back transition. It cannot fail; absent when the thing does nothing then.

    state: (
        opened: ScreenStateArgs<
            {
                entry: | "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel"
                | "story";
                origin: "feed" | "reels-tab";
            },
            {
                cameraSessionId: string;
                entry: "reels-tab"
                | "gallery-picker"
                | "feed-button"
                | "camera-switch";
                mode: "reel" | "story";
                origin: "feed" | "reels-tab";
            },
            undefined,
        >,
    ) => PostingCameraState

    What continuing from it needs, from its input and data (and, for an item, its host screen's state).