/**
 * #common_msg.ts
 *
 * Code generated by ts-proto. DO NOT EDIT.
 * @packageDocumentation
 */
import type { Any } from "../../../../google/protobuf/any.js";
import type { Scope } from "../../../../reddit/devvit/app_permission/v1/app_permission.js";
import type { User } from "../../../reddit/user.js";
/**
 * Label that can be applied to a highlighted post in a subreddit.
 * This enum should map to the equivalent in GraphQL: https://github.snooguts.net/reddit/reddit-service-graphql/blob/master/graphql-py/graphql_api/lib/community_eng/types/highlighted_post.py#L18
 */
export declare enum HighlightedPostLabel {
    /** HIGHLIGHTED_POST_LABEL_UNSPECIFIED - Post is highlighted without a label. */
    HIGHLIGHTED_POST_LABEL_UNSPECIFIED = 0,
    /** ANNOUNCEMENT - Post is highlighted as an announcement. */
    ANNOUNCEMENT = 1,
    /** EVENT - Post is highlighted as an event. */
    EVENT = 2,
    /** MEGATHREAD - Post is highlighted as a megathread. */
    MEGATHREAD = 3,
    /**
     * SHOW_POST_FLAIR - Post is highlighted with its flair as the label.
     * If the post doesn't have flair, this is the same as UNSPECIFIED
     */
    SHOW_POST_FLAIR = 4,
    UNRECOGNIZED = -1
}
/** Indicates who the request should be made on behalf of. Currently, only 'APP' or 'USER' types are supported. */
export declare enum RunAs {
    APP = 0,
    USER = 1,
    UNSPECIFIED = 2,
    UNRECOGNIZED = -1
}
export declare enum GalleryMediaStatus {
    GALLERY_MEDIA_STATUS_UNSPECIFIED = 0,
    GALLERY_MEDIA_STATUS_VALID = 1,
    GALLERY_MEDIA_STATUS_FAILED = 2,
    UNRECOGNIZED = -1
}
/** A Listing is a paginated list of Things such as Subreddits, Posts, or Comments */
export type Listing = {
    /** String value: "Listing" */
    kind: string;
    /** Contents of the listing */
    data?: Listing_ListingData | undefined;
};
export type Listing_ListingData = {
    /**
     * If present, use this as the `after` parameter when calling the same
     * API again to fetch the next page
     */
    after?: string | undefined;
    /**
     * If present, use this as the `before` parameter when calling the same
     * API again to fetch the previous page
     */
    before?: string | undefined;
    /** Contents of the current page of the listing */
    children: WrappedRedditObject[];
    /**
     * Number of objects in `children`
     * Note: Only counts immediate entries in `children` and does not count
     *       nested objects such as comment trees
     */
    dist?: number | undefined;
};
/** A WrappedRedditObject couples a RedditObject with a type identifier */
export type WrappedRedditObject = {
    /** Thing ID prefix to identify what kind of object this is */
    kind: string;
    /** Object data of type `kind` */
    data?: RedditObject | undefined;
};
export type JsonRedditObjects = {
    json?: JsonRedditObjects_JsonType | undefined;
};
export type JsonRedditObjects_JsonType = {
    errors: Any[];
    data?: JsonRedditObjects_JsonType_JsonData | undefined;
};
export type JsonRedditObjects_JsonType_JsonData = {
    things: WrappedRedditObject[];
};
/**
 * A RedditObject can either be a Post (t3) or a Comment (t1)
 *
 * Note: Will be replaced by the discrete {@link Comment} and {@link Post} types
 */
export type RedditObject = {
    /**
     * List of awards this object has received
     * Note: not yet parsed by RedditAPI
     * @ignore
     */
    allAwardings: Any[];
    /** If `true` this has been approved by a moderator */
    approved?: boolean | undefined;
    /** Timestamp when this was approved */
    approvedAtUtc?: number | undefined;
    /** Username of the moderator that manually approved this object */
    approvedBy?: string | undefined;
    /** If `true`, this object has been archived */
    archived?: boolean | undefined;
    associatedAward?: string | undefined;
    /**
     * The username of the author of this object
     * @example "spez"
     */
    author?: string | undefined;
    /**
     * Flair background color as a hex color string (# prefixed)
     * @example "#FF4500"
     */
    authorFlairBackgroundColor?: string | undefined;
    /**
     * Custom CSS classes from the subreddit's stylesheet
     * to apply to the flair if rendered as HTML
     */
    authorFlairCssClass?: string | undefined;
    /**
     * RichText representation of the author's flair
     * Note: incorrectly typed and not guaranteed to be useful
     */
    authorFlairRichtext: RedditObject_AuthorFlairRichText[];
    /**
     * Flair template ID to use when rendering this flair
     * @see Use {@link Flair.FlairList} to get flair templates for a subreddit
     * @example "813b473a-4d74-4933-ba79-a7f1b8b285ef"
     */
    authorFlairTemplateId?: string | undefined;
    /** Plain text representation of the flair RichText */
    authorFlairText?: string | undefined;
    /** One of: "light", "dark" */
    authorFlairTextColor?: string | undefined;
    /** One of: "text", "richtext" */
    authorFlairType?: string | undefined;
    /**
     * Thing ID of the author
     * @example "t2_abc123"
     */
    authorFullname?: string | undefined;
    /** If `true`, the current user has blocked the author */
    authorIsBlocked?: boolean | undefined;
    /**
     * @deprecated
     *
     * @deprecated
     */
    authorPatreonFlair?: boolean | undefined;
    /** If `true`, this author is subscribed to Reddit Premium */
    authorPremium?: boolean | undefined;
    /** List of usernames that have given awards to this object */
    awarders: string[];
    /** Timestamp when this was banned */
    bannedAtUtc?: number | undefined;
    /** Username of the moderator that banned this object */
    bannedBy?: string | undefined;
    /** Markdown body text if this is a Comment */
    body?: string | undefined;
    /** Pre-rendered HTML representing the Markdown or RichText body of a Comment */
    bodyHtml?: string | undefined;
    /** If `true`, the current user can award this object */
    canGild?: boolean | undefined;
    /** If `true`, the current user has adequate permission to moderate this object */
    canModPost?: boolean | undefined;
    /**
     * If `true`, this Comment is collapsed by default
     * @see {@link collapsed_reason} and {@link collapsed_reason_code} to determine why
     */
    collapsed?: boolean | undefined;
    /** Alias for collapsed_reason_code = "CROWD_CONTROL" */
    collapsedBecauseCrowdControl?: boolean | undefined;
    /** User-friendly string explaining why this Comment is collapsed */
    collapsedReason?: string | undefined;
    /** One of: "LOW_SCORE", "BLOCKED_AUTHOR", "POTENTIALLY_TOXIC", "CROWD_CONTROL", "DELETED" */
    collapsedReasonCode?: string | undefined;
    commentType?: string | undefined;
    /** If set to `1` this Comment is considered controversial */
    controversiality?: number | undefined;
    /**
     * Timestamp when this object was created
     * @see Alias for {@link created_utc}
     */
    created?: number | undefined;
    /**
     * Timestamp when this object was created
     * @see Alias for {@link created}
     */
    createdUtc?: number | undefined;
    /** If `true`, an admin has distinguished this object */
    distinguished?: string | undefined;
    /**
     * Previously displayed the number of downvotes this object received
     * @deprecated Always returns 0
     */
    downs?: number | undefined;
    /** If `true`, the body of this object has been edited since it was posted */
    edited?: boolean | undefined;
    /**
     * Number of times this object has received a Gold award
     * @deprecated
     *
     * @deprecated
     */
    gilded?: number | undefined;
    /**
     * Map of gold awards to the number of times received
     * Note: Incorrectly typed and may be unusable.
     * @deprecated
     *
     * @deprecated
     */
    gildings?: Any | undefined;
    /**
     * Thing ID for this Post or Comment without leading thing ID prefix
     * @example "abc123" // for: t1_abc123
     */
    id?: string | undefined;
    /** Whether or not a moderator has disabled reports for this object */
    ignoreReports?: boolean | undefined;
    /** If `true`, this object was submitted by the current user */
    isSubmitter?: boolean | undefined;
    /**
     * Upvote status where:
     *  - `true`: Upvote
     *  - `null`: No vote
     *  - `false`: Downvote
     */
    likes?: boolean | undefined;
    /**
     * Thing ID of the parent Post for this Comment
     * @example "t3_abc123"
     */
    linkId?: string | undefined;
    /** If `true`, this object has been locked and replies are disabled */
    locked?: boolean | undefined;
    /** Notes added by the moderator when a removal reason chosen */
    modNote?: string | undefined;
    /** Moderator username that chose the reason for the object to be removed */
    modReasonBy?: string | undefined;
    /** The title of the removal reason chosen by the moderator */
    modReasonTitle?: string | undefined;
    /**
     * Thing ID for this object
     * @example "t1_abc123"
     */
    name?: string | undefined;
    noFollow?: boolean | undefined;
    /** Total number of reports that have been filed against this object */
    numReports?: number | undefined;
    /**
     * Thing ID of the parent object immediately above this object in the tree
     * Note: If this is a top-level comment the parent would be the Post (t3)
     *       but if it was a reply to another comment the parent would be the
     *       Comment (t1) being replied to
     * @see {@link link_id} to skip to the root of the comment tree
     * @example "t1_abc123"
     */
    parentId?: string | undefined;
    /**
     * The path of this object relative to www.reddit.com
     * @example "/r/aww/comments/ze7u6n/oc_just_woke_up_from_his_nap/"
     */
    permalink?: string | undefined;
    removalReason?: string | undefined;
    /** If `true`, the object has been removed by a moderator */
    removed?: boolean | undefined;
    /**
     * Comments made directly to this object
     * Note: Incorrect type. Currently unusable.
     * @deprecated Please use replyList instead
     *
     * @deprecated
     */
    replies?: string | undefined;
    reportReasons?: Array<any> | undefined;
    /**
     * RichText editor mode
     * One of: "richtext", "markdown"
     */
    rteMode?: string | undefined;
    /** If `true`, the current user has saved this object to their profile */
    saved?: boolean | undefined;
    /** Current total score for this object */
    score?: number | undefined;
    /** If `true`, the `score` for this object is not visible to the current user */
    scoreHidden?: boolean | undefined;
    /** If `true` the current user will receive notifications when someone replies to this object */
    sendReplies?: boolean | undefined;
    /** If `true` this has been flagged as spam by a moderator */
    spam?: boolean | undefined;
    /** If `true` this should be presented before others relative to its type */
    stickied?: boolean | undefined;
    /**
     * Name of the Subreddit that owns this object
     * @example "AskReddit"
     */
    subreddit?: string | undefined;
    /**
     * Thing ID of the Subreddit that owns this object
     * @example "t5_abc123"
     */
    subredditId?: string | undefined;
    /**
     * Name of the Subreddit that owns this object prefixed with "r/"
     * @example "r/aww"
     */
    subredditNamePrefixed?: string | undefined;
    /**
     * One of: "public", "private", "restricted", "gold_only", "gold_restricted",
     *         "archived", "user", "employees_only"
     */
    subredditType?: string | undefined;
    /** One of: "ACTIVE", "INACTIVE" */
    topAwardedType?: string | undefined;
    /** Total count of awards this object has received */
    totalAwardsReceived?: number | undefined;
    treatmentTags: Any[];
    unrepliableReason?: string | undefined;
    /** Alias for score */
    ups?: number | undefined;
    /** The depth of this object relative to the Listing */
    depth?: number | undefined;
    /** If this is a Comment, the title of the parent Post */
    linkTitle?: string | undefined;
    /** If this is a Comment, the author of the parent Post */
    linkAuthor?: string | undefined;
    /** Total number of comments this object has received */
    numComments?: number | undefined;
    /** If `true`, mark as not-safe-for-work */
    over18?: boolean | undefined;
    /**
     * The path of this object relative to www.reddit.com
     * @example "/r/aww/comments/ze7u6n/oc_just_woke_up_from_his_nap/"
     */
    linkPermalink?: string | undefined;
    /** Whether this Thing has been */
    quarantine?: boolean | undefined;
    /** If this is a Comment, the URL associated with the parent Post */
    linkUrl?: string | undefined;
    /** Markdown body text if this is a Text Post */
    selftext?: string | undefined;
    /** Pre-rendered HTML representing the Markdown or RichText body of a Text Post */
    selftextHtml?: string | undefined;
    /** URL of a scaled down preview image of the media in this object */
    thumbnail?: string | undefined;
    /** Width of the thumbnail image, in pixels */
    thumbnailWidth?: number | undefined;
    /** Height of the thumbnail image, in pixels */
    thumbnailHeight?: number | undefined;
    /** Title of the Post if it is a Post */
    title?: string | undefined;
    /**
     * If this is a Post, contains one of the following:
     *  - Empty if this is a Text Post
     *  - The URL submitted by the user if this is a Link Post
     *  - The full-size image or video URL if this is an Image, Video, or VideoGif Post
     */
    url?: string | undefined;
    /**
     * The name of the Subreddit if this object represents a Subreddit
     *
     * Note: This object is intended for Post and Comment data but
     *       Listings.Info() returns a ListingObject which can only contain
     *       WrappedRedditObject data, though that endpoint is able to
     *       fetch Subreddit data if a t5_ ID is provided as an argument.
     */
    displayName?: string | undefined;
    /** The list of moderator permissions for a user */
    modPermissions: string[];
    /** Number of replies intended for More data */
    count?: number | undefined;
    /** Ids of children intended for More data (without leading thing ID prefix) */
    children?: Array<any> | undefined;
    /** List of replies if this is a comment */
    replyList?: Listing | undefined;
    /** If `true` this post has been hidden */
    hidden?: boolean | undefined;
    /**
     * Post Flair aka Link Flair
     * Flair background color as a hex color string (# prefixed)
     * @example "#FF4500"
     */
    linkFlairBackgroundColor?: string | undefined;
    /**
     * Custom CSS classes from the subreddit's stylesheet
     * to apply to the flair if rendered as HTML
     */
    linkFlairCssClass?: string | undefined;
    /** RichText representation of the post's flair */
    linkFlairRichtext: RedditObject_LinkFlairRichText[];
    /**
     * Flair template ID to use when rendering this flair
     * @see Use {@link Flair.FlairList} to get flair templates for a subreddit
     * @example "813b473a-4d74-4933-ba79-a7f1b8b285ef"
     */
    linkFlairTemplateId?: string | undefined;
    /** Plain text representation of the flair RichText */
    linkFlairText?: string | undefined;
    /** One of: "light", "dark" */
    linkFlairTextColor?: string | undefined;
    /** One of: "text", "richtext" */
    linkFlairType?: string | undefined;
    /** Information about the media embedded to the post */
    secureMedia?: RedditObject_SecureMedia | undefined;
    /** If `true`, hide the contents of this post until the user explicitly opens it */
    spoiler: boolean;
    /** List of reports submitted by moderators against this object */
    modReports: Array<any>[];
    /** List of reports submitted by users against this object */
    userReports: Array<any>[];
    /** Who removed this object (username) */
    removedBy?: string | undefined;
    /**
     * Returns information about who/what removed this object. It will return one of the following:
     * - "anti_evil_ops": object is removed by a aeops member
     * - "author": object is removed by author of the post
     * - "automod_filtered": object is filtered by automod
     * - "community_ops": object is removed by a community team member
     * - "content_takedown": object is removed due to content violation
     * - "copyright_takedown": object is removed due to copyright violation
     * - "deleted": object is deleted
     * - "moderator": object is removed by a mod of the sub
     * - "reddit": object is removed by anyone else
     * - None: object is not removed
     */
    removedByCategory?: string | undefined;
    /** List of media (images or gifs) in a gallery post */
    gallery: RedditObject_GalleryMedia[];
};
/**
 * oEmbed is a format for allowing an embedded representation of a URL on third party sites.
 * The simple API allows a website to display embedded content (such as photos or videos)
 * when a user posts a link to that resource, without having to parse the resource directly.
 * See: https://oembed.com/
 */
export type RedditObject_OEmbed = {
    /** The resource type. Valid values, along with value-specific parameters, are described below. E.g. "video" */
    type: string;
    /** A text title, describing the resource. */
    title?: string | undefined;
    /** A URL for the author/owner of the resource. E.g. "YouTube" */
    providerName?: string | undefined;
    /** The name of the resource provider. E.g https://www.youtube.com/ */
    providerUrl?: string | undefined;
    /** The oEmbed version number. This must be 1.0. */
    version: string;
    /** The width of the optional thumbnail in pixels */
    thumbnailWidth?: number | undefined;
    /** The height of the optional thumbnail in pixels */
    thumbnailHeight?: number | undefined;
    /** A URL to a thumbnail image representing the resource. */
    thumbnailUrl?: string | undefined;
    /** The HTML required to embed a video player. The HTML should have no padding or margins. Consumers may wish to load the HTML in an off-domain iframe to avoid XSS vulnerabilities. */
    html: string;
    /** The width in pixels required to display the HTML. */
    height?: number | undefined;
    /** The height in pixels required to display the HTML. */
    width?: number | undefined;
    /** A URL for the author/owner of the resource. E.g. https://www.youtube.com/@Reddit */
    authorUrl?: string | undefined;
    /** The name of the author/owner of the resource. E.g. "Reddit" */
    authorName?: string | undefined;
};
/** Contains the data for a video hosted on Reddit that is in a post */
export type RedditObject_RedditVideo = {
    /** The bitrate of the video in kilobits per second. E.g. 450 */
    bitrateKbps?: number | undefined;
    /** The URL to the DASH playlist file. E.g. "https://v.redd.it/abc123/DASHPlaylist.mpd" */
    dashUrl?: string | undefined;
    /** The duration of the video in seconds. E.g. 30 */
    duration?: number | undefined;
    /** The direct URL to the video. E.g. "https://v.redd.it/abc123/DASH_1080.mp4?source=fallback" */
    fallbackUrl?: string | undefined;
    /** The height of the video in pixels. E.g. 1080 */
    height?: number | undefined;
    /** The URL to the HLS playlist file. E.g. "https://v.redd.it/abc123/HLSPlaylist.m3u8" */
    hlsUrl?: string | undefined;
    /** If `true`, the video is a GIF */
    isGif?: boolean | undefined;
    /** The URL to the scrubber media file. E.g. "https://v.redd.it/abc123/DASH_96.mp4" */
    scrubberMediaUrl?: string | undefined;
    /** The status of the transcoding process. E.g. "completed" */
    transcodingStatus?: string | undefined;
    /** The width of the video in pixels. E.g. 1920 */
    width?: number | undefined;
};
/** RichText document for author flair */
export type RedditObject_AuthorFlairRichText = {
    /** enum of element types.  e.g. emoji or text */
    e?: string | undefined;
    /** text to show up in the flair, e.g. "power poster" */
    t?: string | undefined;
    /** emoji references, e.g. ":rainbow:" */
    a?: string | undefined;
    /** url string, e.g. "https://reddit.com/" */
    u?: string | undefined;
};
/** RichText document for post flair */
export type RedditObject_LinkFlairRichText = {
    /** enum of element types.  e.g. emoji or text */
    e?: string | undefined;
    /** text to show up in the flair, e.g. "Need Advice" */
    t?: string | undefined;
    /** emoji references, e.g. ":rainbow:" */
    a?: string | undefined;
    /** url string, e.g. "https://reddit.com/" */
    u?: string | undefined;
};
/** Secure Media object */
export type RedditObject_SecureMedia = {
    /** The type of the Secure Media (e.g. "youtube.com"). Populated when 'oembed' is present. */
    type: string;
    /** Populated when the post media is hosted on a third-party site. */
    oembed?: RedditObject_OEmbed | undefined;
    /** Populated when the post media is a video hosted on Reddit. */
    redditVideo?: RedditObject_RedditVideo | undefined;
};
export type RedditObject_GalleryMedia = {
    /** The URL of the media */
    url: string;
    /** The width of the media in pixels */
    width: number;
    /** The height of the media in pixels */
    height: number;
    /** Status of the media upload (e.g. "valid", "failed") */
    status: GalleryMediaStatus;
};
/**
 * @privateRemarks
 * TODO: remove in favor of Subreddit
 * A SubredditObject represents a Subreddit (t5)
 */
export type SubredditObject = {
    /**
     * @deprecated
     *
     * @deprecated
     */
    defaultSet?: boolean | undefined;
    /** If `true`, the current user has posted */
    userIsContributor?: boolean | undefined;
    /**
     * Banner image for old.reddit.com
     * @deprecated
     *
     * @deprecated
     */
    bannerImg?: string | undefined;
    /** If `true`, crowd control is enabled */
    restrictPosting?: boolean | undefined;
    /** If `true`, the current user is banned */
    userIsBanned?: boolean | undefined;
    /** If `true`, users are given the option to write a custom explanation when reporting content */
    freeFormReports?: boolean | undefined;
    /** URL to the custom icon as configured from www.reddit.com */
    communityIcon?: string | undefined;
    /**
     * If `true`, show thumbnail images of content is enabled on old.reddit.com
     * @deprecated
     *
     * @deprecated
     */
    showMedia?: boolean | undefined;
    /**
     * @deprecated
     *
     * @deprecated
     */
    iconColor?: string | undefined;
    /**
     * Permanent identifier
     * @example "AskReddit"
     */
    displayName?: string | undefined;
    /**
     * URL to the custom header icon as configured from old.reddit.com
     * @deprecated
     *
     * @deprecated
     */
    headerImg?: string | undefined;
    /**
     * Current, editable name
     * @example "Ask Reddit Something"
     */
    title?: string | undefined;
    /** Community coin balance */
    coins?: number | undefined;
    /**
     * @deprecated
     *
     * @deprecated
     */
    previousNames: string[];
    /** If `true`, this community contains content deemed not-safe-for-work (NSFW) */
    over18?: boolean | undefined;
    /**
     * Resolution of icon_img
     * Format: [width, height]
     * @deprecated
     *
     * @deprecated
     */
    iconSize: number[];
    /**
     * Theme base color as a # prefixed hex color, configured on www.reddit.com
     * @example "#FF4500"
     */
    primaryColor?: string | undefined;
    /**
     * URL to the custom community icon as configured from old.reddit.com as the mobile icon image
     * Note: used as a fallback if community_icon_img is not set
     * @deprecated
     *
     * @deprecated
     */
    iconImg?: string | undefined;
    /**
     * Sidebar description displayed on old.reddit.com
     * @deprecated
     *
     * @deprecated
     */
    description?: string | undefined;
    /**
     * Custom label for the Submit Link button when viewed on old.reddit.com
     * @deprecated
     *
     * @deprecated
     */
    submitLinkLabel?: string | undefined;
    /**
     * Resolution of header_img
     * Note: Incorrectly typed and unusable.
     * @deprecated
     *
     * @deprecated
     */
    headerSize?: string | undefined;
    /** If `true`, crowd control is currently enabled */
    restrictCommenting?: boolean | undefined;
    /** Current count of subscribed users */
    subscribers?: number | undefined;
    /**
     * Custom label for the Submit Text Post button when viewed on old.reddit.com
     * @deprecated
     */
    submitTextLabel?: string | undefined;
    /**
     * If `true`, this Subreddit is using the default icon
     * @deprecated
     *
     * @deprecated
     */
    isDefaultIcon?: boolean | undefined;
    /**
     * Where flair should be shown relative to the Post title on old.reddit.com
     * One of: "left", "right", ""
     * @deprecated
     *
     * @deprecated
     */
    linkFlairPosition?: string | undefined;
    /**
     * Permanent identifier with the leading "r/" prefix
     * @example "r/AskReddit"
     */
    displayNamePrefixed?: string | undefined;
    /**
     * Mobile theme color as configured on old.reddit.com
     * @deprecated
     *
     * @deprecated
     */
    keyColor?: string | undefined;
    /**
     * Thing ID for this object
     * @example "t5_abc123"
     */
    name?: string | undefined;
    /**
     * If `true`, this Subreddit is using the default banner without customizing it
     *
     * @deprecated
     */
    isDefaultBanner?: boolean | undefined;
    /**
     * The path of this object relative to www.reddit.com
     * @example "/r/AskReddit/"
     */
    url?: string | undefined;
    /** If `true`, this Subreddit has been put in quarantine for breaking site rules */
    quarantine?: boolean | undefined;
    /**
     * Resolution of banner_img
     * Format: [width, height]
     * @deprecated
     *
     * @deprecated
     */
    bannerSize: number[];
    /** If `true`, the current user is a moderator */
    userIsModerator?: boolean | undefined;
    /** If `true`, users can join */
    acceptFollowers?: boolean | undefined;
    /** Plain text description */
    publicDescription?: string | undefined;
    /** If `true`, Post Flair is enabled */
    linkFlairEnabled?: boolean | undefined;
    /** If `true`, users may not request access to join */
    disableContributorRequests?: boolean | undefined;
    /**
     * One of: "public", "private", "restricted", "gold_only", "gold_restricted",
     *         "archived", "user", "employees_only"
     */
    subredditType?: string | undefined;
    /** If `true`, the current user has joined */
    userIsSubscriber?: boolean | undefined;
    /** Pre-rendered HTML representing public_description */
    publicDescriptionHtml?: string | undefined;
    /**
     * Thing ID without leading thing ID prefix
     * @example "abc123" // for: t5_abc123
     */
    id?: string | undefined;
    /** If `true`, the current user may not send messages to moderators */
    userIsMuted: boolean;
};
export type JsonStatus = {
    json?: JsonStatus_JsonErrorType | undefined;
};
export type JsonStatus_JsonErrorType = {
    errors: string[];
};
export type WrappedUserObject = {
    id?: string | undefined;
    data?: User | undefined;
};
/**
 * Method extension for specifying how to call a Reddit API endpoint. These
 * options are used for generating API client code.
 */
export type ApiClientConfig = {
    /** 'GET', 'POST', 'PUT', 'DELETE', etc. */
    method: string;
    /**
     * The path of the API endpoint. Placeholders for variables MUST match names of fields in the input message.
     * For example:
     *   "/r/{subreddit}/api/delete_sr_img"
     * Only works if the input message has a string field named 'subreddit'.
     */
    path: string;
    requestBodyType: ApiClientConfig_BodyType;
    /**
     * If set to true, the parameter `api_type=json` will be sent to the reddit API with this request.
     * Note: in the current implementation, this only works for bodyType=FORM_SNAKE.
     */
    enforceJson: boolean;
    /**
     * Some requests involve sending a specific `kind` field that's not otherwise part of the
     * request message. If this field is specified, that will be included in the request.
     */
    requestKindValue: string;
    /**
     * If set, the thing specified in the input message's field specified by `validate_content_id_context`
     * must belong to the subreddit in the call's metadata before the call is allowed to proceed.
     *
     * For example, setting:
     *  option (devvit.plugin.redditapi.common.api_client_config).validate_content_id_context = 'id';
     * will test that the input message's `id` field contains a thing (post/comment) that belongs
     * to the subreddit in the call's metadata.
     */
    validateContentIdContext: string;
    /**
     * If set, the subreddit specified in the input message's field specified by `validate_subreddit_context`
     * must match the subreddit in the call's metadata before the call is allowed to proceed.
     *
     * For example, setting:
     *  option (devvit.plugin.redditapi.common.api_client_config).validate_subreddit_context = 'subreddit';
     * will test that the input message's `subreddit` field contains a subreddit *name* matches the subreddit
     * in the call's metadata.
     */
    validateSubredditContext: string;
    /**
     * If set, the generated code should invoke the specified method to parse the response, rather
     * than using the default protojson rehydration.
     * The method specified signature looks like:
     *   func fixMethodNameResponse([]bytes) (*ResponseType, error)
     */
    useCustomResponseParser: boolean;
    /**
     * For methods that accept a `run_as` field, this specifies the scopes that the user must authorize
     * in order to call the method with runAs="USER".
     */
    runAsUserScopes: Scope[];
    /** For methods that implicitly run as user. */
    alwaysRunAsUser: boolean;
};
/** For methods with a request body, this specifies how the request body should be serialized. */
export declare enum ApiClientConfig_BodyType {
    NONE = 0,
    JSON_CAMEL = 1,
    JSON_SNAKE = 2,
    FORM_CAMEL = 3,
    FORM_SNAKE = 4,
    UNRECOGNIZED = -1
}
/** Represents data on the user's content submission */
export type UserGeneratedContent = {
    /** The text body of the content */
    text: string;
    /** The imageUrls attached to the content, if any */
    imageUrls: string[];
};
//# sourceMappingURL=common_msg.d.ts.map