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

    Interface PostingReelEditorScreenDefinition

    The definition type of PostingReelEditorScreen, named so declaration emit prints its name (see PostingCameraScreenDefinition).

    interface PostingReelEditorScreenDefinition {
        "~top"?: ScreenTopLevelMarker<never>;
        actions: {
            next: EditorNext;
            openMusicBrowser: (
                self: ScreenHandle,
                state: {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode" | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
            ) => (
                ...args: [],
            ) => Effect<
                AssembledHandle<
                    "PostingMusicBrowser",
                    "screen",
                    { browseSessionId: string },
                    {
                        openSearch: (
                            self: ScreenHandle,
                            state: PostingMusicBrowserState,
                        ) => (
                            ...args: [],
                        ) => Effect<
                            AssembledHandle<
                                "PostingMusicSearchResults",
                                "screen",
                                { keywords: ...; query: ...; results: ...; searchSessionId: ... },
                                PostingMusicSearchResultsActions,
                                Record<(...), (...)>,
                                ScreenHandle,
                                "required",
                                true,
                                never,
                                AndroidScreens,
                            >,

                                | IgCheckpointError
                                | IgAccountSuspendedError
                                | IgAccountDisabledError
                                | IgLoginRequiredError
                                | IgUserLoggedOutError
                                | ScreenDataError
                                | ScreenEnterConcurrentError
                                | ScreenEdgeInputError,
                            | GraphqlJsonHttp
                            | MobileApplication
                            | MobileNavigation
                            | ScreenStack
                            | ScreenCatalog,
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                | PlainJsonApiHttp
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | ScreenStack
                | ScreenCatalog,
            >;
        };
        afterAssemble: | ((handle: ScreenHandle) => Effect<void, never, never>)
        | undefined;
        beforeLeave?: (
            left: ScreenBeforeLeave<
                {
                    creationSessionId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
                {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
                {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
            >,
        ) => Effect<
            void,
            never,
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidQuickPromotionStash
            | AndroidPostingMedia,
        >;
        beforeResume?: (
            returning: ScreenBeforeResume<
                {
                    creationSessionId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
                {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
                {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
            >,
        ) => Effect<
            void,
            never,
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidQuickPromotionStash
            | AndroidPostingMedia,
        >;
        catalogEntry: () => ScreenCatalogEntry<
            ScreenStepFailure<
                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError,
                Record<never, never>,
            >,
            ScreenStepServices<
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidQuickPromotionStash
                | AndroidPostingMedia,
                Record<never, never>,
            >,
        >;
        checkpointExtra: (
            handle: ScreenHandle,
        ) => Effect<Json | undefined, SchemaError>;
        data: ScreenCodec<
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
        >;
        enter: (
            args: ScreenEnter<
                {
                    creationSessionId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
            >,
        ) => Effect<
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError,
            | PlainJsonApiHttp
            | Signature
            | MobileSession
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | MobileUserFlows
            | AndroidQuickPromotionStash
            | 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
                | AndroidQuickPromotionStash
                | AndroidPostingMedia,
                Record<never, never>,
            >,
        >;
        id: "PostingReelEditor";
        input: ScreenCodec<
            {
                creationSessionId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            ScreenEncodedInput,
        >;
        is: (
            value: unknown,
        ) => value is AssembledHandle<
            "PostingReelEditor",
            "screen",
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            {
                next: EditorNext;
                openMusicBrowser: (
                    self: ScreenHandle,
                    state: {
                        assetId: string;
                        creationSessionId: string;
                        draftId: string;
                        entry: "reel-mode" | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                ) => (
                    ...args: [],
                ) => Effect<
                    AssembledHandle<
                        "PostingMusicBrowser",
                        "screen",
                        { browseSessionId: string },
                        {
                            openSearch: (
                                self: ScreenHandle,
                                state: PostingMusicBrowserState,
                            ) => (...args: []) => Effect<(...), (...), (...)>;
                        },
                        Record<never, never>,
                        ScreenHandle,
                        "required",
                        true,
                        never,
                        AndroidScreens,
                    >,

                        | IgCheckpointError
                        | IgAccountSuspendedError
                        | IgAccountDisabledError
                        | IgLoginRequiredError
                        | IgUserLoggedOutError
                        | ScreenDataError
                        | ScreenEnterConcurrentError
                        | ScreenEdgeInputError,
                    | PlainJsonApiHttp
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | ScreenStack
                    | ScreenCatalog,
                >;
            },
            Record<never, never>,
            ScreenHandle | undefined,
            "optional",
            true,
            never,
            unknown,
        >;
        items: Record<never, never> | undefined;
        itemVisits: boolean;
        kind: "screen";
        leave:
            | (
                (
                    left: ScreenLeave<
                        {
                            creationSessionId: string;
                            entry: "reel-mode"
                            | "post-mode";
                            media: {
                                byteLength: number;
                                durationMs: number;
                                height: number;
                                id: string;
                                kind: "video";
                                mimeType: "video/mp4";
                                width: number;
                            };
                            origin: "feed"
                            | "reels-tab";
                        },
                        {
                            assetId: string;
                            creationSessionId: string;
                            draftId: string;
                            entry: "reel-mode"
                            | "post-mode";
                            media: {
                                byteLength: number;
                                durationMs: number;
                                height: number;
                                id: string;
                                kind: "video";
                                mimeType: "video/mp4";
                                width: number;
                            };
                            origin: "feed"
                            | "reels-tab";
                        },
                        {
                            assetId: string;
                            creationSessionId: string;
                            draftId: string;
                            entry: "reel-mode"
                            | "post-mode";
                            media: {
                                byteLength: number;
                                durationMs: number;
                                height: number;
                                id: string;
                                kind: "video";
                                mimeType: "video/mp4";
                                width: number;
                            };
                            origin: "feed"
                            | "reels-tab";
                        },
                    >,
                ) => Effect<
                    void,
                    never,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | AndroidQuickPromotionStash
                    | AndroidPostingMedia,
                >
            )
            | undefined;
        ownsCheckpoint: OwnsCheckpoint<"PostingReelEditor">;
        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
                    | AndroidQuickPromotionStash
                    | 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
                | AndroidQuickPromotionStash
                | AndroidPostingMedia,
                Record<never, never>,
            >,
        >;
        resume:
            | (
                (
                    resumed: ScreenResume<
                        {
                            creationSessionId: string;
                            entry: "reel-mode"
                            | "post-mode";
                            media: {
                                byteLength: number;
                                durationMs: number;
                                height: number;
                                id: string;
                                kind: "video";
                                mimeType: "video/mp4";
                                width: number;
                            };
                            origin: "feed"
                            | "reels-tab";
                        },
                        {
                            assetId: string;
                            creationSessionId: string;
                            draftId: string;
                            entry: "reel-mode"
                            | "post-mode";
                            media: {
                                byteLength: number;
                                durationMs: number;
                                height: number;
                                id: string;
                                kind: "video";
                                mimeType: "video/mp4";
                                width: number;
                            };
                            origin: "feed"
                            | "reels-tab";
                        },
                        {
                            assetId: string;
                            creationSessionId: string;
                            draftId: string;
                            entry: "reel-mode"
                            | "post-mode";
                            media: {
                                byteLength: number;
                                durationMs: number;
                                height: number;
                                id: string;
                                kind: "video";
                                mimeType: "video/mp4";
                                width: number;
                            };
                            origin: "feed"
                            | "reels-tab";
                        },
                    >,
                ) => Effect<
                    void,
                    never,
                    | PlainJsonApiHttp
                    | Signature
                    | MobileSession
                    | MobileDevice
                    | GraphqlJsonHttp
                    | MobileApplication
                    | MobileNavigation
                    | MobileUserFlows
                    | AndroidQuickPromotionStash
                    | AndroidPostingMedia,
                >
            )
            | undefined;
        state: (
            opened: ScreenStateArgs<
                {
                    creationSessionId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
                {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode"
                    | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
                undefined,
            >,
        ) => {
            assetId: string;
            creationSessionId: string;
            draftId: string;
            entry: "reel-mode"
            | "post-mode";
            media: {
                byteLength: number;
                durationMs: number;
                height: number;
                id: string;
                kind: "video";
                mimeType: "video/mp4";
                width: number;
            };
            origin: "feed"
            | "reels-tab";
        };
        "~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 postingReelEditorScreen>
      • PostingReelEditorScreenDefinition
    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: {
        next: EditorNext;
        openMusicBrowser: (
            self: ScreenHandle,
            state: {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode" | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
        ) => (
            ...args: [],
        ) => Effect<
            AssembledHandle<
                "PostingMusicBrowser",
                "screen",
                { browseSessionId: string },
                {
                    openSearch: (
                        self: ScreenHandle,
                        state: PostingMusicBrowserState,
                    ) => (
                        ...args: [],
                    ) => Effect<
                        AssembledHandle<
                            "PostingMusicSearchResults",
                            "screen",
                            { keywords: ...; query: ...; results: ...; searchSessionId: ... },
                            PostingMusicSearchResultsActions,
                            Record<(...), (...)>,
                            ScreenHandle,
                            "required",
                            true,
                            never,
                            AndroidScreens,
                        >,

                            | IgCheckpointError
                            | IgAccountSuspendedError
                            | IgAccountDisabledError
                            | IgLoginRequiredError
                            | IgUserLoggedOutError
                            | ScreenDataError
                            | ScreenEnterConcurrentError
                            | ScreenEdgeInputError,
                        | GraphqlJsonHttp
                        | MobileApplication
                        | MobileNavigation
                        | ScreenStack
                        | ScreenCatalog,
                    >;
                },
                Record<never, never>,
                ScreenHandle,
                "required",
                true,
                never,
                AndroidScreens,
            >,

                | IgCheckpointError
                | IgAccountSuspendedError
                | IgAccountDisabledError
                | IgLoginRequiredError
                | IgUserLoggedOutError
                | ScreenDataError
                | ScreenEnterConcurrentError
                | ScreenEdgeInputError,
            | PlainJsonApiHttp
            | MobileDevice
            | GraphqlJsonHttp
            | MobileApplication
            | MobileNavigation
            | ScreenStack
            | ScreenCatalog,
        >;
    }
    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<
            {
                creationSessionId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
        >,
    ) => Effect<
        void,
        never,
        | PlainJsonApiHttp
        | Signature
        | MobileSession
        | MobileDevice
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation
        | MobileUserFlows
        | AndroidQuickPromotionStash
        | 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<
            {
                creationSessionId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
        >,
    ) => Effect<
        void,
        never,
        | PlainJsonApiHttp
        | Signature
        | MobileSession
        | MobileDevice
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation
        | MobileUserFlows
        | AndroidQuickPromotionStash
        | 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
            | AndroidQuickPromotionStash
            | 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<
        {
            assetId: string;
            creationSessionId: string;
            draftId: string;
            entry: "reel-mode"
            | "post-mode";
            media: {
                byteLength: number;
                durationMs: number;
                height: number;
                id: string;
                kind: "video";
                mimeType: "video/mp4";
                width: number;
            };
            origin: "feed"
            | "reels-tab";
        },
    >

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

    enter: (
        args: ScreenEnter<
            {
                creationSessionId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
        >,
    ) => Effect<
        {
            assetId: string;
            creationSessionId: string;
            draftId: string;
            entry: "reel-mode"
            | "post-mode";
            media: {
                byteLength: number;
                durationMs: number;
                height: number;
                id: string;
                kind: "video";
                mimeType: "video/mp4";
                width: number;
            };
            origin: "feed"
            | "reels-tab";
        },
        | IgCheckpointError
        | IgAccountSuspendedError
        | IgAccountDisabledError
        | IgLoginRequiredError
        | IgUserLoggedOutError,
        | PlainJsonApiHttp
        | Signature
        | MobileSession
        | MobileDevice
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation
        | MobileUserFlows
        | AndroidQuickPromotionStash
        | 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
            | AndroidQuickPromotionStash
            | AndroidPostingMedia,
            Record<never, never>,
        >,
    >
    id: "PostingReelEditor"
    input: ScreenCodec<
        {
            creationSessionId: string;
            entry: "reel-mode"
            | "post-mode";
            media: {
                byteLength: number;
                durationMs: number;
                height: number;
                id: string;
                kind: "video";
                mimeType: "video/mp4";
                width: number;
            };
            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<
        "PostingReelEditor",
        "screen",
        {
            assetId: string;
            creationSessionId: string;
            draftId: string;
            entry: "reel-mode"
            | "post-mode";
            media: {
                byteLength: number;
                durationMs: number;
                height: number;
                id: string;
                kind: "video";
                mimeType: "video/mp4";
                width: number;
            };
            origin: "feed"
            | "reels-tab";
        },
        {
            next: EditorNext;
            openMusicBrowser: (
                self: ScreenHandle,
                state: {
                    assetId: string;
                    creationSessionId: string;
                    draftId: string;
                    entry: "reel-mode" | "post-mode";
                    media: {
                        byteLength: number;
                        durationMs: number;
                        height: number;
                        id: string;
                        kind: "video";
                        mimeType: "video/mp4";
                        width: number;
                    };
                    origin: "feed"
                    | "reels-tab";
                },
            ) => (
                ...args: [],
            ) => Effect<
                AssembledHandle<
                    "PostingMusicBrowser",
                    "screen",
                    { browseSessionId: string },
                    {
                        openSearch: (
                            self: ScreenHandle,
                            state: PostingMusicBrowserState,
                        ) => (...args: []) => Effect<(...), (...), (...)>;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "required",
                    true,
                    never,
                    AndroidScreens,
                >,

                    | IgCheckpointError
                    | IgAccountSuspendedError
                    | IgAccountDisabledError
                    | IgLoginRequiredError
                    | IgUserLoggedOutError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenEdgeInputError,
                | PlainJsonApiHttp
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | ScreenStack
                | ScreenCatalog,
            >;
        },
        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<
                    {
                        creationSessionId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        assetId: string;
                        creationSessionId: string;
                        draftId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        assetId: string;
                        creationSessionId: string;
                        draftId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                >,
            ) => Effect<
                void,
                never,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidQuickPromotionStash
                | 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<"PostingReelEditor">

    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
                | AndroidQuickPromotionStash
                | 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
            | AndroidQuickPromotionStash
            | 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<
                    {
                        creationSessionId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        assetId: string;
                        creationSessionId: string;
                        draftId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                    {
                        assetId: string;
                        creationSessionId: string;
                        draftId: string;
                        entry: "reel-mode"
                        | "post-mode";
                        media: {
                            byteLength: number;
                            durationMs: number;
                            height: number;
                            id: string;
                            kind: "video";
                            mimeType: "video/mp4";
                            width: number;
                        };
                        origin: "feed"
                        | "reels-tab";
                    },
                >,
            ) => Effect<
                void,
                never,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | MobileNavigation
                | MobileUserFlows
                | AndroidQuickPromotionStash
                | 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<
            {
                creationSessionId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            {
                assetId: string;
                creationSessionId: string;
                draftId: string;
                entry: "reel-mode"
                | "post-mode";
                media: {
                    byteLength: number;
                    durationMs: number;
                    height: number;
                    id: string;
                    kind: "video";
                    mimeType: "video/mp4";
                    width: number;
                };
                origin: "feed"
                | "reels-tab";
            },
            undefined,
        >,
    ) => {
        assetId: string;
        creationSessionId: string;
        draftId: string;
        entry: "reel-mode"
        | "post-mode";
        media: {
            byteLength: number;
            durationMs: number;
            height: number;
            id: string;
            kind: "video";
            mimeType: "video/mp4";
            width: number;
        };
        origin: "feed"
        | "reels-tab";
    }

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