/**
 * #linksandcomments_svc.ts
 *
 * Code generated by ts-proto. DO NOT EDIT.
 * @packageDocumentation
 */
/* eslint-disable */
import _m0 from "protobufjs/minimal.js";
import { Empty } from "../../../../google/protobuf/empty.js";
import { CustomPostStyles } from "../../../../reddit/devvit/post/v1/post.js";
import { JsonRedditObjects, JsonStatus, Listing } from "../common/common_msg.js";
import { AddPostToHighlightsRequest, AddPostToHighlightsResponse, BasicIdRequest, CommentRequest, EditCustomPostRequest, FollowPostRequest, GetCustomPostStylesRequest, GetIsPostHighlightedRequest, GetIsPostHighlightedResponse, InfoRequest, JsonWrappedComment, MoreChildrenRequest, RemovePostFromHighlightsRequest, RemovePostFromHighlightsResponse, ReportAwardRequest, ReportRequest, SaveRequest, SendRepliesRequest, SetContestModeRequest, SetCustomPostPreviewRequest, SetCustomPostStylesRequest, SetSubredditStickyRequest, SetSuggestedSortRequest, SubmitRequest, SubmitResponse, VoteRequest, } from "./linksandcomments_msg.js";
export const LinksAndCommentsServiceName = "devvit.plugin.redditapi.linksandcomments.LinksAndComments";
export class LinksAndCommentsClientImpl {
    constructor(rpc, opts) {
        this.service = opts?.service || LinksAndCommentsServiceName;
        this.rpc = rpc;
        this.Comment = this.Comment.bind(this);
        this.Del = this.Del.bind(this);
        this.EditUserText = this.EditUserText.bind(this);
        this.FollowPost = this.FollowPost.bind(this);
        this.Hide = this.Hide.bind(this);
        this.Info = this.Info.bind(this);
        this.Lock = this.Lock.bind(this);
        this.MarkNSFW = this.MarkNSFW.bind(this);
        this.MoreChildren = this.MoreChildren.bind(this);
        this.Report = this.Report.bind(this);
        this.ReportAward = this.ReportAward.bind(this);
        this.Save = this.Save.bind(this);
        this.SendReplies = this.SendReplies.bind(this);
        this.SetContestMode = this.SetContestMode.bind(this);
        this.EditCustomPost = this.EditCustomPost.bind(this);
        this.SetCustomPostPreview = this.SetCustomPostPreview.bind(this);
        this.SetSubredditSticky = this.SetSubredditSticky.bind(this);
        this.SetSuggestedSort = this.SetSuggestedSort.bind(this);
        this.Spoiler = this.Spoiler.bind(this);
        this.Submit = this.Submit.bind(this);
        this.SubmitCustomPost = this.SubmitCustomPost.bind(this);
        this.Unhide = this.Unhide.bind(this);
        this.Unlock = this.Unlock.bind(this);
        this.UnmarkNSFW = this.UnmarkNSFW.bind(this);
        this.Unsave = this.Unsave.bind(this);
        this.Unspoiler = this.Unspoiler.bind(this);
        this.Vote = this.Vote.bind(this);
        this.GetIsPostHighlighted = this.GetIsPostHighlighted.bind(this);
        this.AddPostToHighlights = this.AddPostToHighlights.bind(this);
        this.RemovePostFromHighlights = this.RemovePostFromHighlights.bind(this);
        this.SetCustomPostStyles = this.SetCustomPostStyles.bind(this);
        this.GetCustomPostStyles = this.GetCustomPostStyles.bind(this);
    }
    Comment(request, metadata) {
        const data = CommentRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Comment", data, metadata);
        return promise.then((data) => JsonWrappedComment.decode(_m0.Reader.create(data)));
    }
    Del(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Del", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    EditUserText(request, metadata) {
        const data = CommentRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "EditUserText", data, metadata);
        return promise.then((data) => JsonWrappedComment.decode(_m0.Reader.create(data)));
    }
    FollowPost(request, metadata) {
        const data = FollowPostRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "FollowPost", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Hide(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Hide", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Info(request, metadata) {
        const data = InfoRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Info", data, metadata);
        return promise.then((data) => Listing.decode(_m0.Reader.create(data)));
    }
    Lock(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Lock", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    MarkNSFW(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "MarkNSFW", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    MoreChildren(request, metadata) {
        const data = MoreChildrenRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "MoreChildren", data, metadata);
        return promise.then((data) => JsonWrappedComment.decode(_m0.Reader.create(data)));
    }
    Report(request, metadata) {
        const data = ReportRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Report", data, metadata);
        return promise.then((data) => JsonStatus.decode(_m0.Reader.create(data)));
    }
    ReportAward(request, metadata) {
        const data = ReportAwardRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "ReportAward", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Save(request, metadata) {
        const data = SaveRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Save", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    SendReplies(request, metadata) {
        const data = SendRepliesRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SendReplies", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    SetContestMode(request, metadata) {
        const data = SetContestModeRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SetContestMode", data, metadata);
        return promise.then((data) => JsonStatus.decode(_m0.Reader.create(data)));
    }
    EditCustomPost(request, metadata) {
        const data = EditCustomPostRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "EditCustomPost", data, metadata);
        return promise.then((data) => JsonRedditObjects.decode(_m0.Reader.create(data)));
    }
    SetCustomPostPreview(request, metadata) {
        const data = SetCustomPostPreviewRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SetCustomPostPreview", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    SetSubredditSticky(request, metadata) {
        const data = SetSubredditStickyRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SetSubredditSticky", data, metadata);
        return promise.then((data) => JsonStatus.decode(_m0.Reader.create(data)));
    }
    SetSuggestedSort(request, metadata) {
        const data = SetSuggestedSortRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SetSuggestedSort", data, metadata);
        return promise.then((data) => JsonStatus.decode(_m0.Reader.create(data)));
    }
    Spoiler(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Spoiler", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Submit(request, metadata) {
        const data = SubmitRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Submit", data, metadata);
        return promise.then((data) => SubmitResponse.decode(_m0.Reader.create(data)));
    }
    SubmitCustomPost(request, metadata) {
        const data = SubmitRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SubmitCustomPost", data, metadata);
        return promise.then((data) => SubmitResponse.decode(_m0.Reader.create(data)));
    }
    Unhide(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Unhide", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Unlock(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Unlock", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    UnmarkNSFW(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "UnmarkNSFW", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Unsave(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Unsave", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Unspoiler(request, metadata) {
        const data = BasicIdRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Unspoiler", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    Vote(request, metadata) {
        const data = VoteRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "Vote", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    GetIsPostHighlighted(request, metadata) {
        const data = GetIsPostHighlightedRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "GetIsPostHighlighted", data, metadata);
        return promise.then((data) => GetIsPostHighlightedResponse.decode(_m0.Reader.create(data)));
    }
    AddPostToHighlights(request, metadata) {
        const data = AddPostToHighlightsRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "AddPostToHighlights", data, metadata);
        return promise.then((data) => AddPostToHighlightsResponse.decode(_m0.Reader.create(data)));
    }
    RemovePostFromHighlights(request, metadata) {
        const data = RemovePostFromHighlightsRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "RemovePostFromHighlights", data, metadata);
        return promise.then((data) => RemovePostFromHighlightsResponse.decode(_m0.Reader.create(data)));
    }
    SetCustomPostStyles(request, metadata) {
        const data = SetCustomPostStylesRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "SetCustomPostStyles", data, metadata);
        return promise.then((data) => Empty.decode(_m0.Reader.create(data)));
    }
    GetCustomPostStyles(request, metadata) {
        const data = GetCustomPostStylesRequest.encode(request).finish();
        const promise = this.rpc.request(this.service, "GetCustomPostStyles", data, metadata);
        return promise.then((data) => CustomPostStyles.decode(_m0.Reader.create(data)));
    }
}
export const LinksAndCommentsDefinition = {
    name: "LinksAndComments",
    fullName: "devvit.plugin.redditapi.linksandcomments.LinksAndComments",
    methods: {
        /**
         * Submit a new Comment
         * Note: `thing_id` refers to the Post or Comment this comment is replying to
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_comment}
         */
        comment: {
            name: "Comment",
            requestType: CommentRequest,
            requestStream: false,
            responseType: JsonWrappedComment,
            responseStream: false,
            options: {},
        },
        /**
         * Delete a Post or Comment
         * Note: `id` must be a single thing ID for a Post or Comment
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_del}
         */
        del: {
            name: "Del",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([10, 18, 8, 47, 97, 112, 105, 47, 100, 101, 108]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Edit the body text of a Comment or Post
         * Note: `thing_id` refers to the Post or Comment being edited
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_editusertext}
         */
        editUserText: {
            name: "EditUserText",
            requestType: CommentRequest,
            requestStream: false,
            responseType: JsonWrappedComment,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([
                            19,
                            18,
                            17,
                            47,
                            97,
                            112,
                            105,
                            47,
                            101,
                            100,
                            105,
                            116,
                            117,
                            115,
                            101,
                            114,
                            116,
                            101,
                            120,
                            116,
                        ]),
                        new Uint8Array([2, 24, 4]),
                        new Uint8Array([2, 32, 1]),
                        new Uint8Array([2, 64, 1]),
                    ],
                },
            },
        },
        /**
         * Follow or unfollow a Post
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_follow_post}
         */
        followPost: {
            name: "FollowPost",
            requestType: FollowPostRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([18, 18, 16, 47, 97, 112, 105, 47, 102, 111, 108, 108, 111, 119, 95, 112, 111, 115, 116]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Hide one or more Posts for the user
         * Note: `id` must be one or more comma-separated Post thing IDs
         *
         * @see {@link Unhide}
         * @see {@link https://www.reddit.com/dev/api#POST_api_hide}
         */
        hide: {
            name: "Hide",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([11, 18, 9, 47, 97, 112, 105, 47, 104, 105, 100, 101]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Get one or more things by ID, Subreddit name, or Link Post URL
         *
         * @see {@link https://www.reddit.com/dev/api#GET_api_info}
         */
        info: {
            name: "Info",
            requestType: InfoRequest,
            requestStream: false,
            responseType: Listing,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([5, 10, 3, 71, 69, 84]),
                        new Uint8Array([
                            68,
                            18,
                            66,
                            47,
                            97,
                            112,
                            105,
                            47,
                            105,
                            110,
                            102,
                            111,
                            46,
                            106,
                            115,
                            111,
                            110,
                            63,
                            115,
                            114,
                            95,
                            110,
                            97,
                            109,
                            101,
                            61,
                            123,
                            115,
                            117,
                            98,
                            114,
                            101,
                            100,
                            100,
                            105,
                            116,
                            115,
                            125,
                            38,
                            105,
                            100,
                            61,
                            123,
                            116,
                            104,
                            105,
                            110,
                            103,
                            95,
                            105,
                            100,
                            115,
                            125,
                            38,
                            117,
                            114,
                            108,
                            61,
                            123,
                            117,
                            114,
                            108,
                            125,
                            38,
                            114,
                            116,
                            106,
                            61,
                            49,
                        ]),
                    ],
                },
            },
        },
        /**
         * Disable comments for a Post or Comment
         * Note: `id` must be a single thing ID for a Post or Comment
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_lock}
         */
        lock: {
            name: "Lock",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([11, 18, 9, 47, 97, 112, 105, 47, 108, 111, 99, 107]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Marks a Post as Not-Safe-For-Work
         *
         * @see {@link UnmarkNSFW}
         * @see {@link https://www.reddit.com/dev/api#POST_api_marknsfw}
         */
        markNSFW: {
            name: "MarkNSFW",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([15, 18, 13, 47, 97, 112, 105, 47, 109, 97, 114, 107, 110, 115, 102, 119]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Get more comments from a truncated Comment tree
         *
         * A comment tree has been truncated if it ends with an entry of kind "more"
         * instead of "t1".  Use this API to fetch the additional comments listed in
         * the "children" array of the "more" entry.
         *
         * @see {@link https://www.reddit.com/dev/api#GET_api_morechildren}
         */
        moreChildren: {
            name: "MoreChildren",
            requestType: MoreChildrenRequest,
            requestStream: false,
            responseType: JsonWrappedComment,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([5, 10, 3, 71, 69, 84]),
                        new Uint8Array([
                            138,
                            1,
                            18,
                            135,
                            1,
                            47,
                            97,
                            112,
                            105,
                            47,
                            109,
                            111,
                            114,
                            101,
                            99,
                            104,
                            105,
                            108,
                            100,
                            114,
                            101,
                            110,
                            63,
                            99,
                            104,
                            105,
                            108,
                            100,
                            114,
                            101,
                            110,
                            61,
                            123,
                            99,
                            104,
                            105,
                            108,
                            100,
                            114,
                            101,
                            110,
                            125,
                            38,
                            100,
                            101,
                            112,
                            116,
                            104,
                            61,
                            123,
                            100,
                            101,
                            112,
                            116,
                            104,
                            125,
                            38,
                            105,
                            100,
                            61,
                            123,
                            105,
                            100,
                            125,
                            38,
                            108,
                            105,
                            109,
                            105,
                            116,
                            95,
                            99,
                            104,
                            105,
                            108,
                            100,
                            114,
                            101,
                            110,
                            61,
                            123,
                            108,
                            105,
                            109,
                            105,
                            116,
                            95,
                            99,
                            104,
                            105,
                            108,
                            100,
                            114,
                            101,
                            110,
                            125,
                            38,
                            108,
                            105,
                            110,
                            107,
                            95,
                            105,
                            100,
                            61,
                            123,
                            108,
                            105,
                            110,
                            107,
                            95,
                            105,
                            100,
                            125,
                            38,
                            115,
                            111,
                            114,
                            116,
                            61,
                            123,
                            115,
                            111,
                            114,
                            116,
                            125,
                            38,
                            97,
                            112,
                            105,
                            95,
                            116,
                            121,
                            112,
                            101,
                            61,
                            106,
                            115,
                            111,
                            110,
                        ]),
                        new Uint8Array([2, 64, 1]),
                    ],
                },
            },
        },
        /**
         * Report a Post, Comment, or Private Message
         *
         * If reporting a Post or Comment the report is sent to the moderators of the subreddit for review.
         * If reporting a Private Message the report is sent to Reddit for review.
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_report}
         */
        report: {
            name: "Report",
            requestType: ReportRequest,
            requestStream: false,
            responseType: JsonStatus,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([13, 18, 11, 47, 97, 112, 105, 47, 114, 101, 112, 111, 114, 116]),
                        new Uint8Array([2, 24, 4]),
                        new Uint8Array([2, 32, 1]),
                    ],
                },
            },
        },
        /**
         * Report an award to Reddit for review
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_report_award}
         */
        reportAward: {
            name: "ReportAward",
            requestType: ReportAwardRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([19, 18, 17, 47, 97, 112, 105, 47, 114, 101, 112, 111, 114, 116, 95, 97, 119, 97, 114, 100]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Save a Post or Comment to the user's Saved list
         *
         * @see {@link Unsave}
         * @see {@link https://www.reddit.com/dev/api#POST_api_save}
         */
        save: {
            name: "Save",
            requestType: SaveRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([11, 18, 9, 47, 97, 112, 105, 47, 115, 97, 118, 101]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Enable or disable reply notifications for a Post or Comment
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_sendreplies}
         */
        sendReplies: {
            name: "SendReplies",
            requestType: SendRepliesRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([18, 18, 16, 47, 97, 112, 105, 47, 115, 101, 110, 100, 114, 101, 112, 108, 105, 101, 115]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Toggle Contest Mode for a Post's comments
         *
         * Contest Mode randomizes the sort order and hides the vote score for comments
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_set_contest_mode}
         */
        setContestMode: {
            name: "SetContestMode",
            requestType: SetContestModeRequest,
            requestStream: false,
            responseType: JsonStatus,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([
                            23,
                            18,
                            21,
                            47,
                            97,
                            112,
                            105,
                            47,
                            115,
                            101,
                            116,
                            95,
                            99,
                            111,
                            110,
                            116,
                            101,
                            115,
                            116,
                            95,
                            109,
                            111,
                            100,
                            101,
                        ]),
                        new Uint8Array([2, 24, 4]),
                        new Uint8Array([2, 32, 1]),
                    ],
                },
            },
        },
        /** Edit or set fields unique to developer platform custom posts */
        editCustomPost: {
            name: "EditCustomPost",
            requestType: EditCustomPostRequest,
            requestStream: false,
            responseType: JsonRedditObjects,
            responseStream: false,
            options: {},
        },
        /** Update the custom post preview content for a Custom Post. */
        setCustomPostPreview: {
            name: "SetCustomPostPreview",
            requestType: SetCustomPostPreviewRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {},
        },
        /**
         * Set the "sticky" or "pinned" status of a Post
         *
         * If the post was created by the current user they can pin the post
         * to the top of their user profile.  Otherwise they must be a moderator
         * of the subreddit to stick it to the top of the subreddit it was posted in.
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_set_subreddit_sticky}
         */
        setSubredditSticky: {
            name: "SetSubredditSticky",
            requestType: SetSubredditStickyRequest,
            requestStream: false,
            responseType: JsonStatus,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([
                            27,
                            18,
                            25,
                            47,
                            97,
                            112,
                            105,
                            47,
                            115,
                            101,
                            116,
                            95,
                            115,
                            117,
                            98,
                            114,
                            101,
                            100,
                            100,
                            105,
                            116,
                            95,
                            115,
                            116,
                            105,
                            99,
                            107,
                            121,
                        ]),
                        new Uint8Array([2, 24, 4]),
                        new Uint8Array([2, 32, 1]),
                    ],
                },
            },
        },
        /**
         * Set the default sort order for comments in the given Post
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_set_suggested_sort}
         */
        setSuggestedSort: {
            name: "SetSuggestedSort",
            requestType: SetSuggestedSortRequest,
            requestStream: false,
            responseType: JsonStatus,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([
                            25,
                            18,
                            23,
                            47,
                            97,
                            112,
                            105,
                            47,
                            115,
                            101,
                            116,
                            95,
                            115,
                            117,
                            103,
                            103,
                            101,
                            115,
                            116,
                            101,
                            100,
                            95,
                            115,
                            111,
                            114,
                            116,
                        ]),
                        new Uint8Array([2, 24, 4]),
                        new Uint8Array([2, 32, 1]),
                    ],
                },
            },
        },
        /**
         * Sets the spoiler tag on a given Post to hide its contents by default
         * Note: `id` must be a single thing ID for a Post
         *
         * @see {@link Unspoiler}
         * @see {@link https://www.reddit.com/dev/api#POST_api_spoiler}
         */
        spoiler: {
            name: "Spoiler",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([14, 18, 12, 47, 97, 112, 105, 47, 115, 112, 111, 105, 108, 101, 114]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Create a new Post
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_submit}
         *
         * Note: not specifying ApiClientConfig to avoid automatic generation.
         * Submit has extra logic that needs to be manually implemented.
         */
        submit: {
            name: "Submit",
            requestType: SubmitRequest,
            requestStream: false,
            responseType: SubmitResponse,
            responseStream: false,
            options: {},
        },
        /** Create a new Custom Post */
        submitCustomPost: {
            name: "SubmitCustomPost",
            requestType: SubmitRequest,
            requestStream: false,
            responseType: SubmitResponse,
            responseStream: false,
            options: {},
        },
        /**
         * Unhide one or more Posts for the user
         * Note: `id` must be one or more comma-separated Post thing IDs
         *
         * @see {@link Hide}
         * @see {@link https://www.reddit.com/dev/api#POST_api_unhide}
         */
        unhide: {
            name: "Unhide",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([13, 18, 11, 47, 97, 112, 105, 47, 117, 110, 104, 105, 100, 101]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Enable comments for a Post or Comment
         * Note: `id` must be a single thing ID for a Post or Comment
         *
         * @see {@link Lock}
         * @see {@link https://www.reddit.com/dev/api#POST_api_unlock}
         */
        unlock: {
            name: "Unlock",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([13, 18, 11, 47, 97, 112, 105, 47, 117, 110, 108, 111, 99, 107]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Clears the Not-Safe-For-Work status from a Post
         *
         * @see {@link MarkNSFW}
         * @see {@link https://www.reddit.com/dev/api#POST_api_unmarknsfw}
         */
        unmarkNSFW: {
            name: "UnmarkNSFW",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([17, 18, 15, 47, 97, 112, 105, 47, 117, 110, 109, 97, 114, 107, 110, 115, 102, 119]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Remove a Post or Comment from the user's Saved list
         *
         * @see {@link Save}
         * @see {@link https://www.reddit.com/dev/api#POST_api_unsave}
         */
        unsave: {
            name: "Unsave",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([13, 18, 11, 47, 97, 112, 105, 47, 117, 110, 115, 97, 118, 101]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Clears the spoiler tag on a given Post
         *
         * @see {@link Spoiler}
         * @see {@link https://www.reddit.com/dev/api#POST_api_unspoiler}
         */
        unspoiler: {
            name: "Unspoiler",
            requestType: BasicIdRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([16, 18, 14, 47, 97, 112, 105, 47, 117, 110, 115, 112, 111, 105, 108, 101, 114]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /**
         * Vote or clear a vote on a Post or Comment
         *
         * @see {@link https://www.reddit.com/dev/api#POST_api_vote}
         */
        vote: {
            name: "Vote",
            requestType: VoteRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {
                _unknownFields: {
                    480010: [
                        new Uint8Array([6, 10, 4, 80, 79, 83, 84]),
                        new Uint8Array([11, 18, 9, 47, 97, 112, 105, 47, 118, 111, 116, 101]),
                        new Uint8Array([2, 24, 4]),
                    ],
                },
            },
        },
        /** Get whether a post is in its subreddit's community highlights. */
        getIsPostHighlighted: {
            name: "GetIsPostHighlighted",
            requestType: GetIsPostHighlightedRequest,
            requestStream: false,
            responseType: GetIsPostHighlightedResponse,
            responseStream: false,
            options: {},
        },
        /**
         * Add a post to the community's highlights.
         * Calling this RPC for a post that is already highlighted will
         * overwrite the current expiration date and highlgiht label.
         */
        addPostToHighlights: {
            name: "AddPostToHighlights",
            requestType: AddPostToHighlightsRequest,
            requestStream: false,
            responseType: AddPostToHighlightsResponse,
            responseStream: false,
            options: {},
        },
        /**
         * Remove a post from the community's highlights.
         * Calling this RPC for a post that is not highlighted is a no-op.
         */
        removePostFromHighlights: {
            name: "RemovePostFromHighlights",
            requestType: RemovePostFromHighlightsRequest,
            requestStream: false,
            responseType: RemovePostFromHighlightsResponse,
            responseStream: false,
            options: {},
        },
        /** Edit or set style rules unique to developer platform custom posts */
        setCustomPostStyles: {
            name: "SetCustomPostStyles",
            requestType: SetCustomPostStylesRequest,
            requestStream: false,
            responseType: Empty,
            responseStream: false,
            options: {},
        },
        /** Get style rules unique to developer platform custom posts */
        getCustomPostStyles: {
            name: "GetCustomPostStyles",
            requestType: GetCustomPostStylesRequest,
            requestStream: false,
            responseType: CustomPostStyles,
            responseStream: false,
            options: {},
        },
    },
};
