/**
 * #linksandcomments_msg.ts
 *
 * Code generated by ts-proto. DO NOT EDIT.
 * @packageDocumentation
 */
import type { Any } from "../../../../google/protobuf/any.js";
import type { CustomPostStyles, EntrypointHeight } from "../../../../reddit/devvit/post/v1/post.js";
import type { Comment } from "../../../reddit/comment.js";
import type { DevvitPostData } from "../../../ui/effects/web_view/v1alpha/context.js";
import type { HighlightedPostLabel, RunAs, UserGeneratedContent } from "../common/common_msg.js";
/** Request Types */
export type CommentRequest = {
    /**
     * Rich-text body of the comment. Serialized RTJSON string.
     * Note: If `richtext_json` is provided, `text` is ignored.
     * @example '{"document":[{"e":"par","c":[{"e":"text","t":"Hello, world!","f":[[2, 0, 13]]}]}]}'
     */
    richtextJson?: string | undefined;
    /**
     * Markdown body of the comment
     * @example '_Hello, world!_'
     */
    text: string;
    /**
     * Post or Comment thing ID
     * @example "t3_abc123"
     */
    thingId: string;
    /** Indicates who the Comment should be created as */
    runAs: RunAs;
};
export type FollowPostRequest = {
    /** `true` to follow; `false` to unfollow */
    follow: boolean;
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    fullname: string;
};
export type BasicIdRequest = {
    /**
     * Thing ID
     * @example "t1_abc123"
     */
    id: string;
};
export type InfoRequest = {
    /**
     * List of zero or more Subreddit names to fetch
     * @example ["AskReddit", "jokes"]
     */
    subreddits: string[];
    /**
     * List of zero or more thing IDs to fetch
     * Note: Must be a Comment (t1), Post (t3), or Subreddit (t5) ID
     * @example ["t1_abc123", "t3_abc123", "t5_abc123"]
     */
    thingIds: string[];
    /**
     * Any Link Posts that refer to this URL
     * Note: Providing `url` overrides `subreddits` and `thing_ids`
     * @example "https://www.reddit.com/"
     */
    url?: string | undefined;
};
export type MoreChildrenRequest = {
    /**
     * List of Comment thing IDs without their "t1_" prefixes
     * @example ["foo123", "bar456", "baz789"]
     */
    children: string[];
    /** Maximum comment depth */
    depth?: number | undefined;
    /** Only return the comments explicitly listed in `children`, otherwise return as many as available */
    limitChildren?: boolean | undefined;
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    linkId: string;
    /** Optional, one of: "confidence", "top", "new", "controversial", "old", "random", "qa", "live" */
    sort?: string | undefined;
    /** Optional, id of the associated MoreChildren object */
    id?: string | undefined;
};
export type ReportRequest = {
    /** Additional information attached to the report */
    additionalInfo?: string | undefined;
    /** Additional information attached to the report */
    customText?: string | undefined;
    /** Modmail conversation ID to attach to the report for context */
    modmailConvId?: string | undefined;
    /**
     * Free-form reason explaining this report
     * Note: If reporting Subreddit content the subreddit must have
     *       "allow free-form reports by users" enabled
     * @see {@link Subreddits.SubredditAboutRules}
     */
    otherReason?: string | undefined;
    /** One of: "rule", "site_reason_selected", "other" */
    reason: string;
    /** The Subreddit rule this thing is violating */
    ruleReason?: string | undefined;
    /** The Reddit rule this thing is violating */
    siteReason?: string | undefined;
    /**
     * Subreddit name; set if reporting a Post or Comment
     * @example "AskReddit"
     */
    srName?: string | undefined;
    /**
     * The thing ID being reported. Must be a Post (t3), Comment (t1), or Private Message (t4)
     * @example "t3_abc123"
     */
    thingId: string;
    /**
     * List of comma-separated usernames to associate with this report
     * @example "user1,user2,user3"
     */
    usernames?: string | undefined;
};
export type ReportAwardRequest = {
    /**
     * Award ID from a Post or Comment
     * @example "award_813b473a-4d74-4933-ba79-a7f1b8b285ef"
     */
    awardId: string;
    /** Reason for this report */
    reason?: string | undefined;
};
export type SaveRequest = {
    /**
     * Post or Comment thing ID
     * @example "t1_abc123"
     */
    id: string;
};
export type SendRepliesRequest = {
    /**
     * Post or Comment thing ID
     * @example "t1_abc123"
     */
    id: string;
    /** Boolean to enable reply notifications */
    state: boolean;
};
export type SetContestModeRequest = {
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    id: string;
    /** Boolean to enable Contest Mode */
    state: boolean;
};
export type SetSubredditStickyRequest = {
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    id: string;
    /**
     * Which sticky "slot" this Post should take
     * If the slot is empty or `num` is not set the bottom-most slot will be used
     * Valid range for subreddits: 1 - 2
     * Valid range for user profiles: 1 - 4
     */
    num?: number | undefined;
    /** Boolean to set the Post as sticky/pinned */
    state: boolean;
    /**
     * If the Post is owned by the current user set to `true` to pin
     * it to their profile instead of the subreddit it was posted in
     */
    toProfile?: boolean | undefined;
};
export type SetSuggestedSortRequest = {
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    id: string;
    /**
     * One of: "confidence", "top", "new", "controversial", "old", "random", "qa", "live", ""
     * Note: If left blank the suggested sort order is cleared
     */
    sort: string;
};
export type SubmitRequest = {
    /**
     * UUID of the collection to add this Post to
     * @example "813b473a-4d74-4933-ba79-a7f1b8b285ef"
     */
    collectionId?: string | undefined;
    /**
     * Flair template ID to use for this Post
     * @example "813b473a-4d74-4933-ba79-a7f1b8b285ef"
     */
    flairId?: string | undefined;
    /**
     * Custom text to use in the selected flair template if the template
     * has `text_editable` enabled
     */
    flairText?: string | undefined;
    /**
     * What kind of Post is being created
     * One of: "link", "self", "image", "video", "videogif", "crosspost"
     */
    kind: string;
    /** Boolean to set the Not-Safe-For-Work tag */
    nsfw?: boolean | undefined;
    /**
     * Rich-text body of the Post. Serialized RTJSON string.
     * Note: Only used if `kind` is set to "self"
     * Note: `text` and `richtext_json` cannot both be set
     * @example '{"document":[{"e":"par","c":[{"e":"text","t":"Hello, world!","f":[[2, 0, 13]]}]}]}'
     */
    richtextJson?: string | undefined;
    /** Boolean to enable notifications when a comment is added */
    sendreplies?: boolean | undefined;
    /** Boolean to set the Spoiler tag */
    spoiler?: boolean | undefined;
    /**
     * Subreddit name
     * @example "AskReddit"
     */
    sr: string;
    /**
     * Markdown body of the Post
     * Note: Only used if `kind` is set to "self"
     * Note: `text` and `richtext_json` cannot both be set
     * @example "_Hello, world!_"
     */
    text?: string | undefined;
    /** Post title */
    title: string;
    /**
     * The URL this Post refers to if this is a Link Post
     * Note: If `kind` is "video", "videogif", or "image" this must be set to
     *       the media URL created when the media was uploaded
     * Note: If `kind` is "self" this is ignored
     */
    url?: string | undefined;
    /** If `kind` is "video" or "videogif" this must be set to the thumbnail URL */
    videoPosterUrl?: string | undefined;
    /** If `kind` is "crosspost" this must be set to the ID of the post being crossposted */
    crosspostFullname?: string | undefined;
    /** Fallback option of a developer platform experience as rich-text */
    richtextFallback?: string | undefined;
    /** If `kind` is "image" this must be set to the images URLs */
    imageUrls?: Array<any> | undefined;
    /** Indicates who the Post should be submitted as */
    runAs: RunAs;
    /** The UserGeneratedContent attached to the Post */
    userGeneratedContent?: UserGeneratedContent | undefined;
    /**
     * DevvitPostData contains all post data set on the custom post, including internal data and developer-provided data.
     * Example: { "devvit": { "splash": { "tagLine": "my tagline" } }, "developerData": { "riddle": "hello world" } }
     */
    postData?: DevvitPostData | undefined;
    /**
     * Custom styles for the post, such as background colors and the post size. Only present on custom posts.
     * Example: { "background_color": "#FF0000FF", "height": "TALL" }
     */
    customPostStyles?: CustomPostStyles | undefined;
};
export type VoteRequest = {
    /**
     * One of: -1, 0, 1
     * Where:
     *   1 = Upvote
     *   0 = Cleared
     *  -1 = Downvote
     */
    dir: number;
    /**
     * Post or Comment thing ID
     * @example "t1_abc123"
     */
    id: string;
};
export type EditCustomPostRequest = {
    /**
     * Post or Comment thing ID
     * @example "t3_abc123"
     */
    thingId: string;
    /** Fallback option of a developer custom experience as rich-text */
    richtextFallback?: string | undefined;
    /**
     * DevvitPostData contains all post data set on the custom post, including internal data and developer-provided data.
     * Example: { "devvit": { "splash": { "tagLine": "my tagline" } }, "developerData": { "riddle": "hello world" } }
     */
    postData?: DevvitPostData | undefined;
};
export type SetCustomPostPreviewRequest = {
    /**
     * Post or Comment thing ID
     * @example "t3_abc123"
     */
    thingId: string;
    bodyType: SetCustomPostPreviewRequest_BodyType;
    /**
     * For body_type=BLOCKS, this is a base64-encoded Block proto.
     * See: devvit.ui.block_kit.v1beta.Block
     */
    blocksRenderContent?: string | undefined;
};
export declare enum SetCustomPostPreviewRequest_BodyType {
    /** UNKNOWN - Default value. Should not be used for requests. */
    UNKNOWN = 0,
    /** BLOCKS - Body is a Blocks rendering, and should be present in `blocks_render_content`. */
    BLOCKS = 1,
    UNRECOGNIZED = -1
}
export type GetIsPostHighlightedRequest = {
    /**
     * Post thing ID.
     * @example "t3_abc123"
     */
    postId: string;
};
export type AddPostToHighlightsRequest = {
    /**
     * Post thing ID.
     * @example "t3_abc123"
     */
    postId: string;
    /**
     * Expiration time as a Unix timestamp in seconds.
     * If left empty, the post will remain in the highlights until explicitly removed.
     */
    expiresAt?: number | undefined;
    /**
     * Label to display for the highlighted post.
     * If left empty, the post will show no label in the community highlights.
     */
    label?: HighlightedPostLabel | undefined;
};
export type RemovePostFromHighlightsRequest = {
    /**
     * Post thing ID.
     * @example "t3_abc123"
     */
    postId: string;
};
export type GetIsPostHighlightedResponse = {
    /** Whether the post is highlighted. */
    isHighlighted: boolean;
};
export type AddPostToHighlightsResponse = {};
export type RemovePostFromHighlightsResponse = {};
export type JsonWrappedComment = {
    json?: JsonWrappedComment_Json | undefined;
};
export type JsonWrappedComment_WrappedComment = {
    kind: string;
    data?: Comment | undefined;
};
export type JsonWrappedComment_JsonData = {
    things: JsonWrappedComment_WrappedComment[];
};
export type JsonWrappedComment_Json = {
    errors: string[];
    data?: JsonWrappedComment_JsonData | undefined;
};
export type SubmitResponse = {
    json?: SubmitResponse_JsonType | undefined;
};
export type SubmitResponse_JsonType = {
    errors: Any[];
    data?: SubmitResponse_JsonType_JsonData | undefined;
};
export type SubmitResponse_JsonType_JsonData = {
    url?: string | undefined;
    draftsCount?: number | undefined;
    id?: string | undefined;
    name?: string | undefined;
};
export type SetCustomPostStylesRequest = {
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    postId: string;
    /**
     * Custom styles for the post, such as background colors and the post size. Only present on custom posts.
     * If set to `undefined`, all settings will be reset to their default values.
     * Example: { "background_color": "#FF0000FF", "height": "TALL" }
     */
    customPostStyles?: CustomPostStylesInput | undefined;
};
export type GetCustomPostStylesRequest = {
    /**
     * Post thing ID
     * @example "t3_abc123"
     */
    postId: string;
};
/**
 * This is a variant of CustomPostStyles that is used for input in the SetCustomPostStylesRequest.
 * It omits fields that are only returned by the API and not set by developers, such as
 * height_pixels, and makes each field optional.
 */
export type CustomPostStylesInput = {
    /**
     * The default background color shown before an iframe is loaded. Must be in #RRGGBBAA (red, green, blue, alpha transparency) format with a leading hash.
     * The value is case-insensitive. Defaults to transparent (#00000000).
     */
    backgroundColor?: string | undefined;
    /**
     * The dark mode background color shown before an iframe is loaded. Must be in #RRGGBBAA (red, green, blue, alpha transparency) format with a leading hash.
     * The value is case-insensitive. Defaults to transparent (#00000000).
     */
    backgroundColorDark?: string | undefined;
    /**
     * The height of the post. Defaults to 'tall'. This field is used to create or update the Post height.
     * Devvit Gateway maps 'tall' or 'regular' to the pixel height and returns both 'height_pixels' and 'height' to GQL.
     */
    height?: EntrypointHeight | undefined;
    /**
     * The URL of the preview image to show when being shared (e.x. OpenGraph's `og:image`).
     * Defaults to `https://i.redd.it/o0h58lzmax6a1.png`, which is the generic image used for any page that doesn't have a preview image.
     */
    shareImageUrl?: string | undefined;
};
//# sourceMappingURL=linksandcomments_msg.d.ts.map