/**
 * #admin_portal.ts
 *
 * Code generated by ts-proto. DO NOT EDIT.
 * @packageDocumentation
 */
import _m0 from "protobufjs/minimal.js";
import { Metadata } from "../../../lib/Types.js";
import { Empty } from "../../google/protobuf/empty.js";
import { Int32Value } from "../../google/protobuf/wrappers.js";
import { AddDomainsToAppRequest, AppWithDomainInfo, GetAppBySlugWithDomainInfoRequest, GetAppsWithDomainInfoRequest, GetAppsWithDomainInfoResponse, RemoveDomainFromAppRequest } from "./app/app.js";
import { AddCuratedGameRequest, AddCuratedGameResponse, ListCuratedGamesRequest, ListCuratedGamesResponse, RemoveCuratedGameRequest, UpdateCuratedGameRankRequest, UpdateCuratedGameRankResponse } from "./curated_game/curated_game.js";
import { AddGlobalDomainsRequest, GetFetchDomainsResponse, GetFetchDomainsWithStatusRequest, RemoveGlobalDomainRequest } from "./fetch_domain/fetch_domain.js";
import { GetFetchDomainRequestsWithGlobalListTypeRequest, GetPendingRequest, GetResponse, UpdateStatusForAppRequest } from "./fetch_domain_request/fetch_domain_request.js";
import { FullInstallationInfo, InstallationUpgradeManyRequest, InstallationUpgradeManyResponse, InstallationUpgradeRequest } from "./installation/installation.js";
import { CreateModmailTemplateRequest, DeleteModmailTemplateGroupRequest, DeleteModmailTemplateRequest, GetModmailConfigRequest, ListModmailTemplatesRequest, ListModmailTemplatesResponse, ModmailConfig, ModmailTemplate, ReorderModmailTemplatesRequest, UpdateModmailConfigRequest, UpdateModmailTemplateRequest } from "./modmail_template/modmail_template.js";
export interface AdminInstallation {
    Upgrade(request: InstallationUpgradeRequest, metadata?: Metadata): Promise<FullInstallationInfo>;
    UpgradeMany(request: InstallationUpgradeManyRequest, metadata?: Metadata): Promise<InstallationUpgradeManyResponse>;
}
export declare const AdminInstallationServiceName = "devvit.dev_portal.AdminInstallation";
export declare class AdminInstallationClientImpl implements AdminInstallation {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    Upgrade(request: InstallationUpgradeRequest, metadata?: Metadata): Promise<FullInstallationInfo>;
    UpgradeMany(request: InstallationUpgradeManyRequest, metadata?: Metadata): Promise<InstallationUpgradeManyResponse>;
}
export type AdminInstallationDefinition = typeof AdminInstallationDefinition;
export declare const AdminInstallationDefinition: {
    readonly name: "AdminInstallation";
    readonly fullName: "devvit.dev_portal.AdminInstallation";
    readonly methods: {
        readonly upgrade: {
            readonly name: "Upgrade";
            readonly requestType: {
                $type: "devvit.dev_portal.installation.InstallationUpgradeRequest";
                encode(message: InstallationUpgradeRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): InstallationUpgradeRequest;
                fromJSON(object: any): InstallationUpgradeRequest;
                toJSON(message: InstallationUpgradeRequest): unknown;
                create(base?: {
                    id?: string;
                    appVersionId?: string | undefined | undefined;
                }): InstallationUpgradeRequest;
                fromPartial(object: {
                    id?: string;
                    appVersionId?: string | undefined | undefined;
                }): InstallationUpgradeRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.installation.FullInstallationInfo";
                encode(message: FullInstallationInfo, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): FullInstallationInfo;
                fromJSON(object: any): FullInstallationInfo;
                toJSON(message: FullInstallationInfo): unknown;
                create(base?: {
                    installation?: {
                        id?: string;
                        upgradeStrategy?: import("./installation/installation.js").UpgradeStrategy;
                        upgradeStrategyConfig?: {
                            [x: string]: any;
                        } | undefined;
                        runAs?: string | undefined | undefined;
                        type?: import("./app_version/info/app_version_info.js").InstallationType;
                        location?: {
                            id?: string;
                            name?: string;
                            type?: import("../reddit/thing_type.js").ThingType;
                            icon?: string | undefined | undefined;
                            isNsfw?: boolean;
                            isUnavailable?: boolean;
                            isModerator?: boolean;
                        } | undefined;
                        developerPermissions?: import("./installation/installation.js").DeveloperPermissions;
                        appInstallState?: import("./installation/installation.js").AppInstallState;
                        computeCluster?: import("./app/info/compute_cluster.js").ComputeCluster;
                    } | undefined;
                    appVersion?: {
                        id?: string;
                        visibility?: import("./app_version/info/app_version_info.js").VersionVisibility;
                        validInstallTypes?: import("./app_version/info/app_version_info.js").InstallationType[];
                        majorVersion?: number;
                        minorVersion?: number;
                        patchVersion?: number;
                        prereleaseVersion?: number | undefined | undefined;
                        uploadedAt?: Date | undefined;
                        buildStatus?: import("./app_version/info/app_version_info.js").BuildStatus;
                        builtAt?: Date | undefined;
                        about?: string;
                        hasCustomSettings?: boolean;
                        pool?: import("./app_version/info/app_version_info.js").ComputePool;
                        appCapabilities?: import("./nutrition/nutrition.js").NutritionCategory[];
                        publicApiVersion?: string | undefined | undefined;
                        marketingInfo?: {
                            icon?: string | undefined | undefined;
                        } | undefined;
                        hasDevvitJson?: boolean;
                        sourceUploadInfo?: {
                            uploadUrl?: string | undefined | undefined;
                            requiredHeaders?: {
                                [x: string]: string | undefined;
                            };
                            s3ObjectKey?: string | undefined | undefined;
                        } | undefined;
                    } | undefined;
                    app?: {
                        id?: string;
                        slug?: string;
                        name?: string;
                        description?: string;
                        appAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        isNsfw?: boolean;
                        isDelisted?: boolean;
                        isFirstParty?: boolean;
                        isArchived?: boolean;
                        isWebviewEnabled?: boolean;
                        createdAt?: Date | undefined;
                        owner?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        categories?: import("./app/categories/categories.js").Categories[];
                        stats?: {
                            installCount?: number;
                            versionsCount?: number;
                        } | undefined;
                        termsAndConditions?: string;
                        privacyPolicy?: string;
                        defaultPool?: import("./app_version/info/app_version_info.js").ComputePool;
                        isDisabled?: boolean;
                        minSubredditSizeRestrictionEnabled?: boolean;
                        defaultPlaytestSubredditId?: string;
                        promoStatus?: import("../../../community.js").AppPromoStatus;
                        appIconUrl?: string | undefined | undefined;
                        categoriesV2?: {
                            id?: number;
                            name?: string;
                            parentId?: number | undefined | undefined;
                        }[];
                        defaultComputeCluster?: import("./app/info/compute_cluster.js").ComputeCluster;
                    } | undefined;
                }): FullInstallationInfo;
                fromPartial(object: {
                    installation?: {
                        id?: string;
                        upgradeStrategy?: import("./installation/installation.js").UpgradeStrategy;
                        upgradeStrategyConfig?: {
                            [x: string]: any;
                        } | undefined;
                        runAs?: string | undefined | undefined;
                        type?: import("./app_version/info/app_version_info.js").InstallationType;
                        location?: {
                            id?: string;
                            name?: string;
                            type?: import("../reddit/thing_type.js").ThingType;
                            icon?: string | undefined | undefined;
                            isNsfw?: boolean;
                            isUnavailable?: boolean;
                            isModerator?: boolean;
                        } | undefined;
                        developerPermissions?: import("./installation/installation.js").DeveloperPermissions;
                        appInstallState?: import("./installation/installation.js").AppInstallState;
                        computeCluster?: import("./app/info/compute_cluster.js").ComputeCluster;
                    } | undefined;
                    appVersion?: {
                        id?: string;
                        visibility?: import("./app_version/info/app_version_info.js").VersionVisibility;
                        validInstallTypes?: import("./app_version/info/app_version_info.js").InstallationType[];
                        majorVersion?: number;
                        minorVersion?: number;
                        patchVersion?: number;
                        prereleaseVersion?: number | undefined | undefined;
                        uploadedAt?: Date | undefined;
                        buildStatus?: import("./app_version/info/app_version_info.js").BuildStatus;
                        builtAt?: Date | undefined;
                        about?: string;
                        hasCustomSettings?: boolean;
                        pool?: import("./app_version/info/app_version_info.js").ComputePool;
                        appCapabilities?: import("./nutrition/nutrition.js").NutritionCategory[];
                        publicApiVersion?: string | undefined | undefined;
                        marketingInfo?: {
                            icon?: string | undefined | undefined;
                        } | undefined;
                        hasDevvitJson?: boolean;
                        sourceUploadInfo?: {
                            uploadUrl?: string | undefined | undefined;
                            requiredHeaders?: {
                                [x: string]: string | undefined;
                            };
                            s3ObjectKey?: string | undefined | undefined;
                        } | undefined;
                    } | undefined;
                    app?: {
                        id?: string;
                        slug?: string;
                        name?: string;
                        description?: string;
                        appAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        isNsfw?: boolean;
                        isDelisted?: boolean;
                        isFirstParty?: boolean;
                        isArchived?: boolean;
                        isWebviewEnabled?: boolean;
                        createdAt?: Date | undefined;
                        owner?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        categories?: import("./app/categories/categories.js").Categories[];
                        stats?: {
                            installCount?: number;
                            versionsCount?: number;
                        } | undefined;
                        termsAndConditions?: string;
                        privacyPolicy?: string;
                        defaultPool?: import("./app_version/info/app_version_info.js").ComputePool;
                        isDisabled?: boolean;
                        minSubredditSizeRestrictionEnabled?: boolean;
                        defaultPlaytestSubredditId?: string;
                        promoStatus?: import("../../../community.js").AppPromoStatus;
                        appIconUrl?: string | undefined | undefined;
                        categoriesV2?: {
                            id?: number;
                            name?: string;
                            parentId?: number | undefined | undefined;
                        }[];
                        defaultComputeCluster?: import("./app/info/compute_cluster.js").ComputeCluster;
                    } | undefined;
                }): FullInstallationInfo;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        readonly upgradeMany: {
            readonly name: "UpgradeMany";
            readonly requestType: {
                $type: "devvit.dev_portal.installation.InstallationUpgradeManyRequest";
                encode(message: InstallationUpgradeManyRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): InstallationUpgradeManyRequest;
                fromJSON(object: any): InstallationUpgradeManyRequest;
                toJSON(message: InstallationUpgradeManyRequest): unknown;
                create(base?: {
                    ids?: string[];
                    appVersionId?: string;
                }): InstallationUpgradeManyRequest;
                fromPartial(object: {
                    ids?: string[];
                    appVersionId?: string;
                }): InstallationUpgradeManyRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.installation.InstallationUpgradeManyResponse";
                encode(message: InstallationUpgradeManyResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): InstallationUpgradeManyResponse;
                fromJSON(object: any): InstallationUpgradeManyResponse;
                toJSON(message: InstallationUpgradeManyResponse): unknown;
                create(base?: {
                    details?: {
                        id?: string;
                        success?: boolean;
                        error?: string | undefined | undefined;
                    }[];
                }): InstallationUpgradeManyResponse;
                fromPartial(object: {
                    details?: {
                        id?: string;
                        success?: boolean;
                        error?: string | undefined | undefined;
                    }[];
                }): InstallationUpgradeManyResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
/**
 * Service used for reading and updating fetch domain requests from the Admin Portal.
 * A FetchDomainRequest is a request to add or remove a domain from a list. Domains can added to a app-specific list, or to a global list (allowlist or denylist).
 * Apps that request a domain will have a FetchDomainRequest with status PENDING. An Admin can approve or deny the request via AdminPortal. Approved domains are added to the app's allowlist.
 */
export interface AdminFetchDomainRequest {
    /** Retrieves a page of fetch domain requests with status PENDING. */
    GetPending(request: GetPendingRequest, metadata?: Metadata): Promise<GetResponse>;
    /** Returns the number of fetch domain requests with status PENDING. */
    GetPendingRequestsCount(request: Empty, metadata?: Metadata): Promise<Int32Value>;
    /** Updates the status of a fetch domain request for a given app. */
    UpdateStatusForApp(request: UpdateStatusForAppRequest, metadata?: Metadata): Promise<Empty>;
    /** Retrieves a page of fetch domain requests for the specified global list type. */
    GetFetchDomainRequestsWithGlobalListType(request: GetFetchDomainRequestsWithGlobalListTypeRequest, metadata?: Metadata): Promise<GetResponse>;
}
export declare const AdminFetchDomainRequestServiceName = "devvit.dev_portal.AdminFetchDomainRequest";
export declare class AdminFetchDomainRequestClientImpl implements AdminFetchDomainRequest {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    GetPending(request: GetPendingRequest, metadata?: Metadata): Promise<GetResponse>;
    GetPendingRequestsCount(request: Empty, metadata?: Metadata): Promise<Int32Value>;
    UpdateStatusForApp(request: UpdateStatusForAppRequest, metadata?: Metadata): Promise<Empty>;
    GetFetchDomainRequestsWithGlobalListType(request: GetFetchDomainRequestsWithGlobalListTypeRequest, metadata?: Metadata): Promise<GetResponse>;
}
/**
 * Service used for reading and updating fetch domain requests from the Admin Portal.
 * A FetchDomainRequest is a request to add or remove a domain from a list. Domains can added to a app-specific list, or to a global list (allowlist or denylist).
 * Apps that request a domain will have a FetchDomainRequest with status PENDING. An Admin can approve or deny the request via AdminPortal. Approved domains are added to the app's allowlist.
 */
export type AdminFetchDomainRequestDefinition = typeof AdminFetchDomainRequestDefinition;
export declare const AdminFetchDomainRequestDefinition: {
    readonly name: "AdminFetchDomainRequest";
    readonly fullName: "devvit.dev_portal.AdminFetchDomainRequest";
    readonly methods: {
        /** Retrieves a page of fetch domain requests with status PENDING. */
        readonly getPending: {
            readonly name: "GetPending";
            readonly requestType: {
                $type: "devvit.dev_portal.fetch_domain_request.GetPendingRequest";
                encode(message: GetPendingRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetPendingRequest;
                fromJSON(object: any): GetPendingRequest;
                toJSON(message: GetPendingRequest): unknown;
                create(base?: {
                    pageSize?: number;
                    pageNumber?: number;
                }): GetPendingRequest;
                fromPartial(object: {
                    pageSize?: number;
                    pageNumber?: number;
                }): GetPendingRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.fetch_domain_request.GetResponse";
                encode(message: GetResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetResponse;
                fromJSON(object: any): GetResponse;
                toJSON(message: GetResponse): unknown;
                create(base?: {
                    fetchDomainRequests?: {
                        id?: string;
                        createdAt?: Date | undefined;
                        updatedAt?: Date | undefined;
                        domain?: string;
                        status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                        reviewerId?: string | undefined | undefined;
                        appSlug?: string | undefined | undefined;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        reviewerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        timeInQueue?: string | undefined | undefined;
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                }): GetResponse;
                fromPartial(object: {
                    fetchDomainRequests?: {
                        id?: string;
                        createdAt?: Date | undefined;
                        updatedAt?: Date | undefined;
                        domain?: string;
                        status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                        reviewerId?: string | undefined | undefined;
                        appSlug?: string | undefined | undefined;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        reviewerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        timeInQueue?: string | undefined | undefined;
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                }): GetResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Returns the number of fetch domain requests with status PENDING. */
        readonly getPendingRequestsCount: {
            readonly name: "GetPendingRequestsCount";
            readonly requestType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Int32Value";
                encode(message: Int32Value, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Int32Value;
                fromJSON(object: any): Int32Value;
                toJSON(message: Int32Value): unknown;
                create(base?: {
                    value?: number;
                }): Int32Value;
                fromPartial(object: {
                    value?: number;
                }): Int32Value;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Updates the status of a fetch domain request for a given app. */
        readonly updateStatusForApp: {
            readonly name: "UpdateStatusForApp";
            readonly requestType: {
                $type: "devvit.dev_portal.fetch_domain_request.UpdateStatusForAppRequest";
                encode(message: UpdateStatusForAppRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): UpdateStatusForAppRequest;
                fromJSON(object: any): UpdateStatusForAppRequest;
                toJSON(message: UpdateStatusForAppRequest): unknown;
                create(base?: {
                    id?: string;
                    appSlug?: string;
                    domain?: string;
                    status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                }): UpdateStatusForAppRequest;
                fromPartial(object: {
                    id?: string;
                    appSlug?: string;
                    domain?: string;
                    status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                }): UpdateStatusForAppRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Retrieves a page of fetch domain requests for the specified global list type. */
        readonly getFetchDomainRequestsWithGlobalListType: {
            readonly name: "GetFetchDomainRequestsWithGlobalListType";
            readonly requestType: {
                $type: "devvit.dev_portal.fetch_domain_request.GetFetchDomainRequestsWithGlobalListTypeRequest";
                encode(message: GetFetchDomainRequestsWithGlobalListTypeRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetFetchDomainRequestsWithGlobalListTypeRequest;
                fromJSON(object: any): GetFetchDomainRequestsWithGlobalListTypeRequest;
                toJSON(message: GetFetchDomainRequestsWithGlobalListTypeRequest): unknown;
                create(base?: {
                    globalListType?: import("./fetch_domain_request/fetch_domain_request.js").GlobalListType;
                    pageNumber?: number;
                    pageSize?: number;
                }): GetFetchDomainRequestsWithGlobalListTypeRequest;
                fromPartial(object: {
                    globalListType?: import("./fetch_domain_request/fetch_domain_request.js").GlobalListType;
                    pageNumber?: number;
                    pageSize?: number;
                }): GetFetchDomainRequestsWithGlobalListTypeRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.fetch_domain_request.GetResponse";
                encode(message: GetResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetResponse;
                fromJSON(object: any): GetResponse;
                toJSON(message: GetResponse): unknown;
                create(base?: {
                    fetchDomainRequests?: {
                        id?: string;
                        createdAt?: Date | undefined;
                        updatedAt?: Date | undefined;
                        domain?: string;
                        status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                        reviewerId?: string | undefined | undefined;
                        appSlug?: string | undefined | undefined;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        reviewerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        timeInQueue?: string | undefined | undefined;
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                }): GetResponse;
                fromPartial(object: {
                    fetchDomainRequests?: {
                        id?: string;
                        createdAt?: Date | undefined;
                        updatedAt?: Date | undefined;
                        domain?: string;
                        status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                        reviewerId?: string | undefined | undefined;
                        appSlug?: string | undefined | undefined;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        reviewerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        timeInQueue?: string | undefined | undefined;
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                }): GetResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
/**
 * Service used for reading, adding, and removing fetch domains from the Admin Portal.
 * A FetchDomain is a domain that has either been approved or denied for use.
 * FetchDomains can be used by specific app(s), or globally. Global FetchDomains have a global status of ALLOWED or DENIED, while app-level FetchDomains have status UNDECIDED.
 */
export interface AdminFetchDomain {
    /** Retrieves a page of fetch domains with the specified global status. */
    GetFetchDomainsWithStatus(request: GetFetchDomainsWithStatusRequest, metadata?: Metadata): Promise<GetFetchDomainsResponse>;
    /** Adds a list of domains to a global list (allowlist or denylist). */
    AddGlobalDomains(request: AddGlobalDomainsRequest, metadata?: Metadata): Promise<Empty>;
    /** Removes a domain from a global list. */
    RemoveGlobalDomain(request: RemoveGlobalDomainRequest, metadata?: Metadata): Promise<Empty>;
}
export declare const AdminFetchDomainServiceName = "devvit.dev_portal.AdminFetchDomain";
export declare class AdminFetchDomainClientImpl implements AdminFetchDomain {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    GetFetchDomainsWithStatus(request: GetFetchDomainsWithStatusRequest, metadata?: Metadata): Promise<GetFetchDomainsResponse>;
    AddGlobalDomains(request: AddGlobalDomainsRequest, metadata?: Metadata): Promise<Empty>;
    RemoveGlobalDomain(request: RemoveGlobalDomainRequest, metadata?: Metadata): Promise<Empty>;
}
/**
 * Service used for reading, adding, and removing fetch domains from the Admin Portal.
 * A FetchDomain is a domain that has either been approved or denied for use.
 * FetchDomains can be used by specific app(s), or globally. Global FetchDomains have a global status of ALLOWED or DENIED, while app-level FetchDomains have status UNDECIDED.
 */
export type AdminFetchDomainDefinition = typeof AdminFetchDomainDefinition;
export declare const AdminFetchDomainDefinition: {
    readonly name: "AdminFetchDomain";
    readonly fullName: "devvit.dev_portal.AdminFetchDomain";
    readonly methods: {
        /** Retrieves a page of fetch domains with the specified global status. */
        readonly getFetchDomainsWithStatus: {
            readonly name: "GetFetchDomainsWithStatus";
            readonly requestType: {
                $type: "devvit.dev_portal.fetch_domain.GetFetchDomainsWithStatusRequest";
                encode(message: GetFetchDomainsWithStatusRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetFetchDomainsWithStatusRequest;
                fromJSON(object: any): GetFetchDomainsWithStatusRequest;
                toJSON(message: GetFetchDomainsWithStatusRequest): unknown;
                create(base?: {
                    globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                    pageNumber?: number;
                    pageSize?: number;
                    domainFilter?: string | undefined | undefined;
                }): GetFetchDomainsWithStatusRequest;
                fromPartial(object: {
                    globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                    pageNumber?: number;
                    pageSize?: number;
                    domainFilter?: string | undefined | undefined;
                }): GetFetchDomainsWithStatusRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.fetch_domain.GetFetchDomainsResponse";
                encode(message: GetFetchDomainsResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetFetchDomainsResponse;
                fromJSON(object: any): GetFetchDomainsResponse;
                toJSON(message: GetFetchDomainsResponse): unknown;
                create(base?: {
                    fetchDomains?: {
                        domain?: string;
                        globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                        updatedAt?: Date | undefined;
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                    totalCount?: number | undefined | undefined;
                }): GetFetchDomainsResponse;
                fromPartial(object: {
                    fetchDomains?: {
                        domain?: string;
                        globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                        updatedAt?: Date | undefined;
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                    totalCount?: number | undefined | undefined;
                }): GetFetchDomainsResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Adds a list of domains to a global list (allowlist or denylist). */
        readonly addGlobalDomains: {
            readonly name: "AddGlobalDomains";
            readonly requestType: {
                $type: "devvit.dev_portal.fetch_domain.AddGlobalDomainsRequest";
                encode(message: AddGlobalDomainsRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): AddGlobalDomainsRequest;
                fromJSON(object: any): AddGlobalDomainsRequest;
                toJSON(message: AddGlobalDomainsRequest): unknown;
                create(base?: {
                    domains?: string[];
                    globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                }): AddGlobalDomainsRequest;
                fromPartial(object: {
                    domains?: string[];
                    globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                }): AddGlobalDomainsRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Removes a domain from a global list. */
        readonly removeGlobalDomain: {
            readonly name: "RemoveGlobalDomain";
            readonly requestType: {
                $type: "devvit.dev_portal.fetch_domain.RemoveGlobalDomainRequest";
                encode(message: RemoveGlobalDomainRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): RemoveGlobalDomainRequest;
                fromJSON(object: any): RemoveGlobalDomainRequest;
                toJSON(message: RemoveGlobalDomainRequest): unknown;
                create(base?: {
                    domain?: string;
                    globalListType?: import("./fetch_domain_request/fetch_domain_request.js").GlobalListType;
                }): RemoveGlobalDomainRequest;
                fromPartial(object: {
                    domain?: string;
                    globalListType?: import("./fetch_domain_request/fetch_domain_request.js").GlobalListType;
                }): RemoveGlobalDomainRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
/** Service used for reading and updating app information from the Admin Portal. */
export interface AdminApp {
    /** Retrieves an app by slug with its fetch domain info. */
    GetAppBySlugWithDomainInfo(request: GetAppBySlugWithDomainInfoRequest, metadata?: Metadata): Promise<AppWithDomainInfo>;
    /** Retrieves a page of apps with their fetch domain info. */
    GetAppsWithDomainInfo(request: GetAppsWithDomainInfoRequest, metadata?: Metadata): Promise<GetAppsWithDomainInfoResponse>;
    /** Adds domains to an app's allowedDomains list. */
    AddDomainsToApp(request: AddDomainsToAppRequest, metadata?: Metadata): Promise<Empty>;
    /** Removes a domain from an app's allowedDomains list. */
    RemoveDomainFromApp(request: RemoveDomainFromAppRequest, metadata?: Metadata): Promise<Empty>;
}
export declare const AdminAppServiceName = "devvit.dev_portal.AdminApp";
export declare class AdminAppClientImpl implements AdminApp {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    GetAppBySlugWithDomainInfo(request: GetAppBySlugWithDomainInfoRequest, metadata?: Metadata): Promise<AppWithDomainInfo>;
    GetAppsWithDomainInfo(request: GetAppsWithDomainInfoRequest, metadata?: Metadata): Promise<GetAppsWithDomainInfoResponse>;
    AddDomainsToApp(request: AddDomainsToAppRequest, metadata?: Metadata): Promise<Empty>;
    RemoveDomainFromApp(request: RemoveDomainFromAppRequest, metadata?: Metadata): Promise<Empty>;
}
/** Service used for reading and updating app information from the Admin Portal. */
export type AdminAppDefinition = typeof AdminAppDefinition;
export declare const AdminAppDefinition: {
    readonly name: "AdminApp";
    readonly fullName: "devvit.dev_portal.AdminApp";
    readonly methods: {
        /** Retrieves an app by slug with its fetch domain info. */
        readonly getAppBySlugWithDomainInfo: {
            readonly name: "GetAppBySlugWithDomainInfo";
            readonly requestType: {
                $type: "devvit.dev_portal.app.GetAppBySlugWithDomainInfoRequest";
                encode(message: GetAppBySlugWithDomainInfoRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetAppBySlugWithDomainInfoRequest;
                fromJSON(object: any): GetAppBySlugWithDomainInfoRequest;
                toJSON(message: GetAppBySlugWithDomainInfoRequest): unknown;
                create(base?: {
                    appSlug?: string;
                }): GetAppBySlugWithDomainInfoRequest;
                fromPartial(object: {
                    appSlug?: string;
                }): GetAppBySlugWithDomainInfoRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.app.AppWithDomainInfo";
                encode(message: AppWithDomainInfo, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): AppWithDomainInfo;
                fromJSON(object: any): AppWithDomainInfo;
                toJSON(message: AppWithDomainInfo): unknown;
                create(base?: {
                    appId?: string;
                    appSlug?: string;
                    appName?: string;
                    appOwnerAccount?: {
                        id?: string;
                        displayName?: string;
                        snoovatarIconUrl?: string;
                    } | undefined;
                    domainRequests?: {
                        id?: string;
                        createdAt?: Date | undefined;
                        updatedAt?: Date | undefined;
                        domain?: string;
                        status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                        reviewerId?: string | undefined | undefined;
                        appSlug?: string | undefined | undefined;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        reviewerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        timeInQueue?: string | undefined | undefined;
                    }[];
                    allowedDomains?: {
                        domain?: string;
                        globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                        updatedAt?: Date | undefined;
                    }[];
                }): AppWithDomainInfo;
                fromPartial(object: {
                    appId?: string;
                    appSlug?: string;
                    appName?: string;
                    appOwnerAccount?: {
                        id?: string;
                        displayName?: string;
                        snoovatarIconUrl?: string;
                    } | undefined;
                    domainRequests?: {
                        id?: string;
                        createdAt?: Date | undefined;
                        updatedAt?: Date | undefined;
                        domain?: string;
                        status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                        reviewerId?: string | undefined | undefined;
                        appSlug?: string | undefined | undefined;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        reviewerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        timeInQueue?: string | undefined | undefined;
                    }[];
                    allowedDomains?: {
                        domain?: string;
                        globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                        updatedAt?: Date | undefined;
                    }[];
                }): AppWithDomainInfo;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Retrieves a page of apps with their fetch domain info. */
        readonly getAppsWithDomainInfo: {
            readonly name: "GetAppsWithDomainInfo";
            readonly requestType: {
                $type: "devvit.dev_portal.app.GetAppsWithDomainInfoRequest";
                encode(message: GetAppsWithDomainInfoRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetAppsWithDomainInfoRequest;
                fromJSON(object: any): GetAppsWithDomainInfoRequest;
                toJSON(message: GetAppsWithDomainInfoRequest): unknown;
                create(base?: {
                    pageSize?: number;
                    pageNumber?: number;
                }): GetAppsWithDomainInfoRequest;
                fromPartial(object: {
                    pageSize?: number;
                    pageNumber?: number;
                }): GetAppsWithDomainInfoRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.app.GetAppsWithDomainInfoResponse";
                encode(message: GetAppsWithDomainInfoResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetAppsWithDomainInfoResponse;
                fromJSON(object: any): GetAppsWithDomainInfoResponse;
                toJSON(message: GetAppsWithDomainInfoResponse): unknown;
                create(base?: {
                    apps?: {
                        appId?: string;
                        appSlug?: string;
                        appName?: string;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        domainRequests?: {
                            id?: string;
                            createdAt?: Date | undefined;
                            updatedAt?: Date | undefined;
                            domain?: string;
                            status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                            reviewerId?: string | undefined | undefined;
                            appSlug?: string | undefined | undefined;
                            appOwnerAccount?: {
                                id?: string;
                                displayName?: string;
                                snoovatarIconUrl?: string;
                            } | undefined;
                            reviewerAccount?: {
                                id?: string;
                                displayName?: string;
                                snoovatarIconUrl?: string;
                            } | undefined;
                            timeInQueue?: string | undefined | undefined;
                        }[];
                        allowedDomains?: {
                            domain?: string;
                            globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                            updatedAt?: Date | undefined;
                        }[];
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                }): GetAppsWithDomainInfoResponse;
                fromPartial(object: {
                    apps?: {
                        appId?: string;
                        appSlug?: string;
                        appName?: string;
                        appOwnerAccount?: {
                            id?: string;
                            displayName?: string;
                            snoovatarIconUrl?: string;
                        } | undefined;
                        domainRequests?: {
                            id?: string;
                            createdAt?: Date | undefined;
                            updatedAt?: Date | undefined;
                            domain?: string;
                            status?: import("./fetch_domain_request/fetch_domain_request.js").FetchDomainRequestStatus;
                            reviewerId?: string | undefined | undefined;
                            appSlug?: string | undefined | undefined;
                            appOwnerAccount?: {
                                id?: string;
                                displayName?: string;
                                snoovatarIconUrl?: string;
                            } | undefined;
                            reviewerAccount?: {
                                id?: string;
                                displayName?: string;
                                snoovatarIconUrl?: string;
                            } | undefined;
                            timeInQueue?: string | undefined | undefined;
                        }[];
                        allowedDomains?: {
                            domain?: string;
                            globalStatus?: import("./fetch_domain/fetch_domain.js").FetchDomainGlobalStatus;
                            updatedAt?: Date | undefined;
                        }[];
                    }[];
                    hasNextPage?: boolean | undefined | undefined;
                }): GetAppsWithDomainInfoResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Adds domains to an app's allowedDomains list. */
        readonly addDomainsToApp: {
            readonly name: "AddDomainsToApp";
            readonly requestType: {
                $type: "devvit.dev_portal.app.AddDomainsToAppRequest";
                encode(message: AddDomainsToAppRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): AddDomainsToAppRequest;
                fromJSON(object: any): AddDomainsToAppRequest;
                toJSON(message: AddDomainsToAppRequest): unknown;
                create(base?: {
                    appId?: string;
                    domains?: string[];
                }): AddDomainsToAppRequest;
                fromPartial(object: {
                    appId?: string;
                    domains?: string[];
                }): AddDomainsToAppRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Removes a domain from an app's allowedDomains list. */
        readonly removeDomainFromApp: {
            readonly name: "RemoveDomainFromApp";
            readonly requestType: {
                $type: "devvit.dev_portal.app.RemoveDomainFromAppRequest";
                encode(message: RemoveDomainFromAppRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): RemoveDomainFromAppRequest;
                fromJSON(object: any): RemoveDomainFromAppRequest;
                toJSON(message: RemoveDomainFromAppRequest): unknown;
                create(base?: {
                    appId?: string;
                    domain?: string;
                }): RemoveDomainFromAppRequest;
                fromPartial(object: {
                    appId?: string;
                    domain?: string;
                }): RemoveDomainFromAppRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
/** Service used for reading and mutating curated games in the Admin Portal. */
export interface AdminCuratedGame {
    /** Lists curated game entries, optionally filtered by curation type. */
    ListGames(request: ListCuratedGamesRequest, metadata?: Metadata): Promise<ListCuratedGamesResponse>;
    /** Adds an app to a curated game list. */
    AddGame(request: AddCuratedGameRequest, metadata?: Metadata): Promise<AddCuratedGameResponse>;
    /** Updates rank for an app in the curated games list. */
    UpdateGameRank(request: UpdateCuratedGameRankRequest, metadata?: Metadata): Promise<UpdateCuratedGameRankResponse>;
    /** Removes an app from the curated games list. */
    RemoveGame(request: RemoveCuratedGameRequest, metadata?: Metadata): Promise<Empty>;
}
export declare const AdminCuratedGameServiceName = "devvit.dev_portal.AdminCuratedGame";
export declare class AdminCuratedGameClientImpl implements AdminCuratedGame {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    ListGames(request: ListCuratedGamesRequest, metadata?: Metadata): Promise<ListCuratedGamesResponse>;
    AddGame(request: AddCuratedGameRequest, metadata?: Metadata): Promise<AddCuratedGameResponse>;
    UpdateGameRank(request: UpdateCuratedGameRankRequest, metadata?: Metadata): Promise<UpdateCuratedGameRankResponse>;
    RemoveGame(request: RemoveCuratedGameRequest, metadata?: Metadata): Promise<Empty>;
}
/** Service used for reading and mutating curated games in the Admin Portal. */
export type AdminCuratedGameDefinition = typeof AdminCuratedGameDefinition;
export declare const AdminCuratedGameDefinition: {
    readonly name: "AdminCuratedGame";
    readonly fullName: "devvit.dev_portal.AdminCuratedGame";
    readonly methods: {
        /** Lists curated game entries, optionally filtered by curation type. */
        readonly listGames: {
            readonly name: "ListGames";
            readonly requestType: {
                $type: "devvit.dev_portal.curated_game.ListCuratedGamesRequest";
                encode(message: ListCuratedGamesRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ListCuratedGamesRequest;
                fromJSON(object: any): ListCuratedGamesRequest;
                toJSON(message: ListCuratedGamesRequest): unknown;
                create(base?: {
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType | undefined;
                }): ListCuratedGamesRequest;
                fromPartial(object: {
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType | undefined;
                }): ListCuratedGamesRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.curated_game.ListCuratedGamesResponse";
                encode(message: ListCuratedGamesResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ListCuratedGamesResponse;
                fromJSON(object: any): ListCuratedGamesResponse;
                toJSON(message: ListCuratedGamesResponse): unknown;
                create(base?: {
                    entries?: {
                        appId?: string;
                        appName?: string;
                        appSlug?: string;
                        curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                        lastModified?: Date | undefined;
                        rank?: number;
                        subredditId?: string;
                    }[];
                }): ListCuratedGamesResponse;
                fromPartial(object: {
                    entries?: {
                        appId?: string;
                        appName?: string;
                        appSlug?: string;
                        curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                        lastModified?: Date | undefined;
                        rank?: number;
                        subredditId?: string;
                    }[];
                }): ListCuratedGamesResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Adds an app to a curated game list. */
        readonly addGame: {
            readonly name: "AddGame";
            readonly requestType: {
                $type: "devvit.dev_portal.curated_game.AddCuratedGameRequest";
                encode(message: AddCuratedGameRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): AddCuratedGameRequest;
                fromJSON(object: any): AddCuratedGameRequest;
                toJSON(message: AddCuratedGameRequest): unknown;
                create(base?: {
                    appSlug?: string;
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                    subredditId?: string;
                }): AddCuratedGameRequest;
                fromPartial(object: {
                    appSlug?: string;
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                    subredditId?: string;
                }): AddCuratedGameRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.curated_game.AddCuratedGameResponse";
                encode(message: AddCuratedGameResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): AddCuratedGameResponse;
                fromJSON(object: any): AddCuratedGameResponse;
                toJSON(message: AddCuratedGameResponse): unknown;
                create(base?: {
                    entry?: {
                        appId?: string;
                        appName?: string;
                        appSlug?: string;
                        curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                        lastModified?: Date | undefined;
                        rank?: number;
                        subredditId?: string;
                    } | undefined;
                }): AddCuratedGameResponse;
                fromPartial(object: {
                    entry?: {
                        appId?: string;
                        appName?: string;
                        appSlug?: string;
                        curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                        lastModified?: Date | undefined;
                        rank?: number;
                        subredditId?: string;
                    } | undefined;
                }): AddCuratedGameResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Updates rank for an app in the curated games list. */
        readonly updateGameRank: {
            readonly name: "UpdateGameRank";
            readonly requestType: {
                $type: "devvit.dev_portal.curated_game.UpdateCuratedGameRankRequest";
                encode(message: UpdateCuratedGameRankRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): UpdateCuratedGameRankRequest;
                fromJSON(object: any): UpdateCuratedGameRankRequest;
                toJSON(message: UpdateCuratedGameRankRequest): unknown;
                create(base?: {
                    appSlug?: string;
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                    rank?: number;
                }): UpdateCuratedGameRankRequest;
                fromPartial(object: {
                    appSlug?: string;
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                    rank?: number;
                }): UpdateCuratedGameRankRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.curated_game.UpdateCuratedGameRankResponse";
                encode(message: UpdateCuratedGameRankResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): UpdateCuratedGameRankResponse;
                fromJSON(object: any): UpdateCuratedGameRankResponse;
                toJSON(message: UpdateCuratedGameRankResponse): unknown;
                create(base?: {
                    entry?: {
                        appId?: string;
                        appName?: string;
                        appSlug?: string;
                        curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                        lastModified?: Date | undefined;
                        rank?: number;
                        subredditId?: string;
                    } | undefined;
                }): UpdateCuratedGameRankResponse;
                fromPartial(object: {
                    entry?: {
                        appId?: string;
                        appName?: string;
                        appSlug?: string;
                        curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                        lastModified?: Date | undefined;
                        rank?: number;
                        subredditId?: string;
                    } | undefined;
                }): UpdateCuratedGameRankResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Removes an app from the curated games list. */
        readonly removeGame: {
            readonly name: "RemoveGame";
            readonly requestType: {
                $type: "devvit.dev_portal.curated_game.RemoveCuratedGameRequest";
                encode(message: RemoveCuratedGameRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): RemoveCuratedGameRequest;
                fromJSON(object: any): RemoveCuratedGameRequest;
                toJSON(message: RemoveCuratedGameRequest): unknown;
                create(base?: {
                    appSlug?: string;
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                }): RemoveCuratedGameRequest;
                fromPartial(object: {
                    appSlug?: string;
                    curationType?: import("./curated_game/curated_game.js").CuratedGameCurationType;
                }): RemoveCuratedGameRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
/** Service for managing modmail templates used in app review. */
export interface AdminModmailTemplate {
    /** Lists all modmail templates and the global header/footer config. */
    List(request: ListModmailTemplatesRequest, metadata?: Metadata): Promise<ListModmailTemplatesResponse>;
    /** Creates a new modmail template. */
    Create(request: CreateModmailTemplateRequest, metadata?: Metadata): Promise<ModmailTemplate>;
    /** Updates an existing modmail template. */
    Update(request: UpdateModmailTemplateRequest, metadata?: Metadata): Promise<ModmailTemplate>;
    /** Deletes a modmail template. */
    Delete(request: DeleteModmailTemplateRequest, metadata?: Metadata): Promise<Empty>;
    /** Dissolves or deletes a group of templates. */
    DeleteGroup(request: DeleteModmailTemplateGroupRequest, metadata?: Metadata): Promise<Empty>;
    /** Reorders templates by specifying the desired ID order. */
    Reorder(request: ReorderModmailTemplatesRequest, metadata?: Metadata): Promise<Empty>;
    /** Retrieves the global modmail header/footer config. */
    GetConfig(request: GetModmailConfigRequest, metadata?: Metadata): Promise<ModmailConfig>;
    /** Updates the global modmail header/footer config. */
    UpdateConfig(request: UpdateModmailConfigRequest, metadata?: Metadata): Promise<ModmailConfig>;
}
export declare const AdminModmailTemplateServiceName = "devvit.dev_portal.AdminModmailTemplate";
export declare class AdminModmailTemplateClientImpl implements AdminModmailTemplate {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    List(request: ListModmailTemplatesRequest, metadata?: Metadata): Promise<ListModmailTemplatesResponse>;
    Create(request: CreateModmailTemplateRequest, metadata?: Metadata): Promise<ModmailTemplate>;
    Update(request: UpdateModmailTemplateRequest, metadata?: Metadata): Promise<ModmailTemplate>;
    Delete(request: DeleteModmailTemplateRequest, metadata?: Metadata): Promise<Empty>;
    DeleteGroup(request: DeleteModmailTemplateGroupRequest, metadata?: Metadata): Promise<Empty>;
    Reorder(request: ReorderModmailTemplatesRequest, metadata?: Metadata): Promise<Empty>;
    GetConfig(request: GetModmailConfigRequest, metadata?: Metadata): Promise<ModmailConfig>;
    UpdateConfig(request: UpdateModmailConfigRequest, metadata?: Metadata): Promise<ModmailConfig>;
}
/** Service for managing modmail templates used in app review. */
export type AdminModmailTemplateDefinition = typeof AdminModmailTemplateDefinition;
export declare const AdminModmailTemplateDefinition: {
    readonly name: "AdminModmailTemplate";
    readonly fullName: "devvit.dev_portal.AdminModmailTemplate";
    readonly methods: {
        /** Lists all modmail templates and the global header/footer config. */
        readonly list: {
            readonly name: "List";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.ListModmailTemplatesRequest";
                encode(_: ListModmailTemplatesRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ListModmailTemplatesRequest;
                fromJSON(_: any): ListModmailTemplatesRequest;
                toJSON(_: ListModmailTemplatesRequest): unknown;
                create(base?: {}): ListModmailTemplatesRequest;
                fromPartial(_: {}): ListModmailTemplatesRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.modmail_template.ListModmailTemplatesResponse";
                encode(message: ListModmailTemplatesResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ListModmailTemplatesResponse;
                fromJSON(object: any): ListModmailTemplatesResponse;
                toJSON(message: ListModmailTemplatesResponse): unknown;
                create(base?: {
                    templates?: {
                        id?: string;
                        title?: string;
                        body?: string;
                        actionType?: import("./modmail_template/modmail_template.js").ModmailTemplateActionType;
                        groupName?: string;
                        sortOrder?: number;
                    }[];
                    config?: {
                        rejectHeader?: string;
                        rejectFooter?: string;
                        publishHeader?: string;
                        publishFooter?: string;
                    } | undefined;
                }): ListModmailTemplatesResponse;
                fromPartial(object: {
                    templates?: {
                        id?: string;
                        title?: string;
                        body?: string;
                        actionType?: import("./modmail_template/modmail_template.js").ModmailTemplateActionType;
                        groupName?: string;
                        sortOrder?: number;
                    }[];
                    config?: {
                        rejectHeader?: string;
                        rejectFooter?: string;
                        publishHeader?: string;
                        publishFooter?: string;
                    } | undefined;
                }): ListModmailTemplatesResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Creates a new modmail template. */
        readonly create: {
            readonly name: "Create";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.CreateModmailTemplateRequest";
                encode(message: CreateModmailTemplateRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): CreateModmailTemplateRequest;
                fromJSON(object: any): CreateModmailTemplateRequest;
                toJSON(message: CreateModmailTemplateRequest): unknown;
                create(base?: {
                    title?: string;
                    body?: string;
                    actionType?: string;
                    groupName?: string;
                }): CreateModmailTemplateRequest;
                fromPartial(object: {
                    title?: string;
                    body?: string;
                    actionType?: string;
                    groupName?: string;
                }): CreateModmailTemplateRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.modmail_template.ModmailTemplate";
                encode(message: ModmailTemplate, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ModmailTemplate;
                fromJSON(object: any): ModmailTemplate;
                toJSON(message: ModmailTemplate): unknown;
                create(base?: {
                    id?: string;
                    title?: string;
                    body?: string;
                    actionType?: import("./modmail_template/modmail_template.js").ModmailTemplateActionType;
                    groupName?: string;
                    sortOrder?: number;
                }): ModmailTemplate;
                fromPartial(object: {
                    id?: string;
                    title?: string;
                    body?: string;
                    actionType?: import("./modmail_template/modmail_template.js").ModmailTemplateActionType;
                    groupName?: string;
                    sortOrder?: number;
                }): ModmailTemplate;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Updates an existing modmail template. */
        readonly update: {
            readonly name: "Update";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.UpdateModmailTemplateRequest";
                encode(message: UpdateModmailTemplateRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): UpdateModmailTemplateRequest;
                fromJSON(object: any): UpdateModmailTemplateRequest;
                toJSON(message: UpdateModmailTemplateRequest): unknown;
                create(base?: {
                    id?: string;
                    title?: string | undefined | undefined;
                    body?: string | undefined | undefined;
                    actionType?: string | undefined | undefined;
                    groupName?: string | undefined | undefined;
                    sortOrder?: number | undefined | undefined;
                }): UpdateModmailTemplateRequest;
                fromPartial(object: {
                    id?: string;
                    title?: string | undefined | undefined;
                    body?: string | undefined | undefined;
                    actionType?: string | undefined | undefined;
                    groupName?: string | undefined | undefined;
                    sortOrder?: number | undefined | undefined;
                }): UpdateModmailTemplateRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.modmail_template.ModmailTemplate";
                encode(message: ModmailTemplate, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ModmailTemplate;
                fromJSON(object: any): ModmailTemplate;
                toJSON(message: ModmailTemplate): unknown;
                create(base?: {
                    id?: string;
                    title?: string;
                    body?: string;
                    actionType?: import("./modmail_template/modmail_template.js").ModmailTemplateActionType;
                    groupName?: string;
                    sortOrder?: number;
                }): ModmailTemplate;
                fromPartial(object: {
                    id?: string;
                    title?: string;
                    body?: string;
                    actionType?: import("./modmail_template/modmail_template.js").ModmailTemplateActionType;
                    groupName?: string;
                    sortOrder?: number;
                }): ModmailTemplate;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Deletes a modmail template. */
        readonly delete: {
            readonly name: "Delete";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.DeleteModmailTemplateRequest";
                encode(message: DeleteModmailTemplateRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): DeleteModmailTemplateRequest;
                fromJSON(object: any): DeleteModmailTemplateRequest;
                toJSON(message: DeleteModmailTemplateRequest): unknown;
                create(base?: {
                    id?: string;
                }): DeleteModmailTemplateRequest;
                fromPartial(object: {
                    id?: string;
                }): DeleteModmailTemplateRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Dissolves or deletes a group of templates. */
        readonly deleteGroup: {
            readonly name: "DeleteGroup";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.DeleteModmailTemplateGroupRequest";
                encode(message: DeleteModmailTemplateGroupRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): DeleteModmailTemplateGroupRequest;
                fromJSON(object: any): DeleteModmailTemplateGroupRequest;
                toJSON(message: DeleteModmailTemplateGroupRequest): unknown;
                create(base?: {
                    groupName?: string;
                    actionType?: string;
                    keepTemplates?: boolean;
                }): DeleteModmailTemplateGroupRequest;
                fromPartial(object: {
                    groupName?: string;
                    actionType?: string;
                    keepTemplates?: boolean;
                }): DeleteModmailTemplateGroupRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Reorders templates by specifying the desired ID order. */
        readonly reorder: {
            readonly name: "Reorder";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.ReorderModmailTemplatesRequest";
                encode(message: ReorderModmailTemplatesRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ReorderModmailTemplatesRequest;
                fromJSON(object: any): ReorderModmailTemplatesRequest;
                toJSON(message: ReorderModmailTemplatesRequest): unknown;
                create(base?: {
                    templateIds?: string[];
                }): ReorderModmailTemplatesRequest;
                fromPartial(object: {
                    templateIds?: string[];
                }): ReorderModmailTemplatesRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Retrieves the global modmail header/footer config. */
        readonly getConfig: {
            readonly name: "GetConfig";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.GetModmailConfigRequest";
                encode(_: GetModmailConfigRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetModmailConfigRequest;
                fromJSON(_: any): GetModmailConfigRequest;
                toJSON(_: GetModmailConfigRequest): unknown;
                create(base?: {}): GetModmailConfigRequest;
                fromPartial(_: {}): GetModmailConfigRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.modmail_template.ModmailConfig";
                encode(message: ModmailConfig, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ModmailConfig;
                fromJSON(object: any): ModmailConfig;
                toJSON(message: ModmailConfig): unknown;
                create(base?: {
                    rejectHeader?: string;
                    rejectFooter?: string;
                    publishHeader?: string;
                    publishFooter?: string;
                }): ModmailConfig;
                fromPartial(object: {
                    rejectHeader?: string;
                    rejectFooter?: string;
                    publishHeader?: string;
                    publishFooter?: string;
                }): ModmailConfig;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Updates the global modmail header/footer config. */
        readonly updateConfig: {
            readonly name: "UpdateConfig";
            readonly requestType: {
                $type: "devvit.dev_portal.modmail_template.UpdateModmailConfigRequest";
                encode(message: UpdateModmailConfigRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): UpdateModmailConfigRequest;
                fromJSON(object: any): UpdateModmailConfigRequest;
                toJSON(message: UpdateModmailConfigRequest): unknown;
                create(base?: {
                    rejectHeader?: string | undefined | undefined;
                    rejectFooter?: string | undefined | undefined;
                    publishHeader?: string | undefined | undefined;
                    publishFooter?: string | undefined | undefined;
                }): UpdateModmailConfigRequest;
                fromPartial(object: {
                    rejectHeader?: string | undefined | undefined;
                    rejectFooter?: string | undefined | undefined;
                    publishHeader?: string | undefined | undefined;
                    publishFooter?: string | undefined | undefined;
                }): UpdateModmailConfigRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.dev_portal.modmail_template.ModmailConfig";
                encode(message: ModmailConfig, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ModmailConfig;
                fromJSON(object: any): ModmailConfig;
                toJSON(message: ModmailConfig): unknown;
                create(base?: {
                    rejectHeader?: string;
                    rejectFooter?: string;
                    publishHeader?: string;
                    publishFooter?: string;
                }): ModmailConfig;
                fromPartial(object: {
                    rejectHeader?: string;
                    rejectFooter?: string;
                    publishHeader?: string;
                    publishFooter?: string;
                }): ModmailConfig;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
interface Rpc {
    request(service: string, method: string, data: Uint8Array, metadata?: Metadata): Promise<Uint8Array>;
}
export {};
//# sourceMappingURL=admin_portal.d.ts.map