import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file api/vapor/v1/vapor.proto.
 */
export declare const file_api_vapor_v1_vapor: GenFile;
/**
 * Feature represents a feature flag configuration for a specific entity.
 * Features control access to functionality and can be toggled per user/channel.
 *
 * @generated from message api.vapor.v1.Feature
 */
export type Feature = Message<"api.vapor.v1.Feature"> & {
    /**
     * Unique identifier for this feature record (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * ID of the user or channel this feature applies to.
     * Must be a valid MongoDB ObjectID.
     *
     * @generated from field: string entity_id = 2;
     */
    entityId: string;
    /**
     * Type of entity this feature applies to.
     * Valid values: "user", "channel"
     *
     * @generated from field: string entity_type = 3;
     */
    entityType: string;
    /**
     * Feature name using kebab-case convention.
     * Examples: "dark-mode", "api-v2", "premium-analytics"
     *
     * @generated from field: string name = 4;
     */
    name: string;
    /**
     * Whether this feature is currently enabled for the entity.
     * True = feature active, False = feature disabled
     *
     * @generated from field: bool enabled = 5;
     */
    enabled: boolean;
    /**
     * Timestamp when this feature was first configured.
     *
     * @generated from field: google.protobuf.Timestamp created_at = 6;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp of the last modification to this feature setting.
     *
     * @generated from field: google.protobuf.Timestamp updated_at = 7;
     */
    updatedAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.Feature.
 * Use `create(FeatureSchema)` to create a new message.
 */
export declare const FeatureSchema: GenMessage<Feature>;
/**
 * Channel represents a streaming channel from a platform provider.
 * Channels are the primary broadcasting entities with associated metadata.
 *
 * @generated from message api.vapor.v1.Channel
 */
export type Channel = Message<"api.vapor.v1.Channel"> & {
    /**
     * Unique identifier for the channel (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * Streaming platform provider.
     * Valid values: "twitch", "youtube", "facebook", "trovo", "kick", "tiktok", "instagram"
     *
     * @generated from field: string provider = 2;
     */
    provider: string;
    /**
     * Unique identifier from the streaming platform.
     * This is the platform's internal ID for the channel.
     *
     * @generated from field: string provider_id = 3;
     */
    providerId: string;
    /**
     * ID of the OAuth connection linking this channel to a user.
     * References the connection collection.
     *
     * @generated from field: string connection_id = 4;
     */
    connectionId: string;
    /**
     * Username/handle on the streaming platform.
     * Usually lowercase, URL-safe identifier.
     *
     * @generated from field: string username = 5;
     */
    username: string;
    /**
     * Human-readable display name for the channel.
     * May contain spaces, special characters, emoji.
     *
     * @generated from field: string display_name = 6;
     */
    displayName: string;
    /**
     * Custom alias for the channel (platform-specific).
     * Used for vanity URLs or custom identifiers.
     *
     * @generated from field: string alias = 7;
     */
    alias: string;
    /**
     * Channel type classification.
     * Platform-specific values like "user", "group", "page".
     *
     * @generated from field: string type = 8;
     */
    type: string;
    /**
     * Broadcaster tier/status on the platform.
     * Examples: "partner", "affiliate", "regular" (Twitch)
     *          "verified", "standard" (YouTube)
     *
     * @generated from field: string broadcaster_type = 9;
     */
    broadcasterType: string;
    /**
     * Primary broadcast language (ISO 639-1 code).
     * Examples: "en", "es", "de", "ja"
     *
     * @generated from field: string language = 10;
     */
    language: string;
    /**
     * URL to the channel's profile picture/avatar.
     * Should be HTTPS URL to an image resource.
     *
     * @generated from field: string avatar = 11;
     */
    avatar: string;
    /**
     * Timestamp when this channel was first created in the system.
     *
     * @generated from field: google.protobuf.Timestamp created_at = 15;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp of the last update to this channel's data.
     *
     * @generated from field: google.protobuf.Timestamp updated_at = 16;
     */
    updatedAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.Channel.
 * Use `create(ChannelSchema)` to create a new message.
 */
export declare const ChannelSchema: GenMessage<Channel>;
/**
 * User represents a platform user account.
 * Users can be streamers, staff, or advertisers with different access levels.
 *
 * @generated from message api.vapor.v1.User
 */
export type User = Message<"api.vapor.v1.User"> & {
    /**
     * Unique identifier for the user (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * Username chosen by or assigned to the user.
     * Should be unique across the platform.
     *
     * @generated from field: string username = 2;
     */
    username: string;
    /**
     * Email address of the user.
     * Must be verified through OAuth provider.
     *
     * @generated from field: string email = 3;
     */
    email: string;
    /**
     * System-wide role determining platform access.
     * Valid values: "user", "staff", "advertiser", "moderator", "admin"
     *
     * @generated from field: string role = 4;
     */
    role: string;
    /**
     * ID of the user's primary channel (if they're a streamer).
     * This is their default channel for operations.
     *
     * @generated from field: string primary_channel_id = 5;
     */
    primaryChannelId: string;
    /**
     * Whether the user account is currently suspended.
     * Suspended users cannot perform any actions.
     *
     * @generated from field: bool suspended = 6;
     */
    suspended: boolean;
    /**
     * URL to the user's profile picture/avatar.
     * Usually sourced from OAuth provider.
     *
     * @generated from field: string avatar = 7;
     */
    avatar: string;
    /**
     * Timestamp when this user account was created.
     *
     * @generated from field: google.protobuf.Timestamp created_at = 8;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp of the last update to this user's profile.
     *
     * @generated from field: google.protobuf.Timestamp updated_at = 9;
     */
    updatedAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.User.
 * Use `create(UserSchema)` to create a new message.
 */
export declare const UserSchema: GenMessage<User>;
/**
 * Authorization represents a user's permission to access a channel.
 * This implements role-based access control (RBAC) for channel operations.
 *
 * @generated from message api.vapor.v1.Authorization
 */
export type Authorization = Message<"api.vapor.v1.Authorization"> & {
    /**
     * Unique identifier for this authorization (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * Role granted to the user for this channel.
     * Valid values: "owner", "administrator", "editor", "viewer"
     * Roles have hierarchical permissions (owner > admin > editor > viewer).
     *
     * @generated from field: string role = 2;
     */
    role: string;
    /**
     * ID of the channel this authorization applies to.
     * References the channel collection.
     *
     * @generated from field: string channel_id = 3;
     */
    channelId: string;
    /**
     * Timestamp when this authorization was granted.
     *
     * @generated from field: google.protobuf.Timestamp created_at = 4;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp of the last modification to this authorization.
     *
     * @generated from field: google.protobuf.Timestamp updated_at = 5;
     */
    updatedAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.Authorization.
 * Use `create(AuthorizationSchema)` to create a new message.
 */
export declare const AuthorizationSchema: GenMessage<Authorization>;
/**
 * Session represents an authenticated user session.
 * Sessions use JWT tokens with configurable expiration (default: 300 days).
 *
 * @generated from message api.vapor.v1.Session
 */
export type Session = Message<"api.vapor.v1.Session"> & {
    /**
     * Unique identifier for this session (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * ID of the user who owns this session.
     * References the user collection.
     *
     * @generated from field: string user_id = 2;
     */
    userId: string;
    /**
     * Timestamp when this session was created (login time).
     *
     * @generated from field: google.protobuf.Timestamp created_at = 3;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp when this session will expire.
     * After expiration, the user must re-authenticate.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 4;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.Session.
 * Use `create(SessionSchema)` to create a new message.
 */
export declare const SessionSchema: GenMessage<Session>;
/**
 * Invitation represents a pending channel access invitation.
 * Invitations allow channel owners/admins to grant access to other users.
 *
 * @generated from message api.vapor.v1.Invitation
 */
export type Invitation = Message<"api.vapor.v1.Invitation"> & {
    /**
     * Unique identifier for this invitation (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * Role that will be granted when invitation is accepted.
     * Valid values: "administrator", "editor", "viewer"
     * Note: "owner" role cannot be granted via invitation.
     *
     * @generated from field: string role = 2;
     */
    role: string;
    /**
     * ID of the channel this invitation is for.
     * References the channel collection.
     *
     * @generated from field: string channel_id = 3;
     */
    channelId: string;
    /**
     * Timestamp when this invitation was created.
     *
     * @generated from field: google.protobuf.Timestamp created_at = 4;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp of the last modification to this invitation.
     *
     * @generated from field: google.protobuf.Timestamp updated_at = 5;
     */
    updatedAt?: Timestamp;
    /**
     * Timestamp when this invitation expires.
     * Expired invitations cannot be accepted.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 6;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.Invitation.
 * Use `create(InvitationSchema)` to create a new message.
 */
export declare const InvitationSchema: GenMessage<Invitation>;
/**
 * APIKey represents a service-to-service authentication key.
 * API keys provide programmatic access to channel resources without user sessions.
 *
 * @generated from message api.vapor.v1.APIKey
 */
export type APIKey = Message<"api.vapor.v1.APIKey"> & {
    /**
     * Unique identifier for this API key (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * Channel ID this key provides access to.
     * References the channel collection.
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Human-readable name/description for the key.
     * Examples: "Production API", "CI/CD Pipeline", "Overlay API Key"
     *
     * @generated from field: string name = 3;
     */
    name: string;
    /**
     * Role granted to this API key.
     * Determines the permissions level for this key.
     * Common values: "overlay", "editor", "administrator"
     *
     * @generated from field: string role = 4;
     */
    role: string;
    /**
     * Additional permission scopes for fine-grained access control.
     * Can be used to further restrict what the key can access.
     *
     * @generated from field: repeated string scopes = 5;
     */
    scopes: string[];
    /**
     * Timestamp when this key was created.
     *
     * @generated from field: google.protobuf.Timestamp created_at = 6;
     */
    createdAt?: Timestamp;
    /**
     * Timestamp when this key was last updated.
     *
     * @generated from field: google.protobuf.Timestamp updated_at = 7;
     */
    updatedAt?: Timestamp;
    /**
     * Timestamp of last successful use (optional).
     * Useful for identifying unused keys.
     *
     * @generated from field: google.protobuf.Timestamp last_used_at = 8;
     */
    lastUsedAt?: Timestamp;
    /**
     * The actual API key value.
     * Note: This field matches the storage layer structure.
     * The service layer will handle secure storage (hashing).
     * Format: "vpr_" followed by random base64url characters
     * @sensitive: Contains authentication credentials
     *
     * @generated from field: string key = 9;
     */
    key: string;
    /**
     * Indicates if this is the default/overlay API key for the channel.
     * Default keys cannot be deleted, only rotated.
     * Each channel has exactly one default API key.
     *
     * @generated from field: bool is_default = 10;
     */
    isDefault: boolean;
};
/**
 * Describes the message api.vapor.v1.APIKey.
 * Use `create(APIKeySchema)` to create a new message.
 */
export declare const APIKeySchema: GenMessage<APIKey>;
/**
 * AccessToken represents OAuth tokens for channel API access.
 * These tokens are used to interact with the streaming platform's API.
 *
 * @generated from message api.vapor.v1.AccessToken
 */
export type AccessToken = Message<"api.vapor.v1.AccessToken"> & {
    /**
     * OAuth access token for the streaming platform API.
     * This token is encrypted before storage for security.
     * @sensitive: This field contains authentication credentials.
     *
     * @generated from field: string token = 1;
     */
    token: string;
    /**
     * Timestamp when this access token expires.
     * Must refresh before expiration to maintain API access.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 2;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.AccessToken.
 * Use `create(AccessTokenSchema)` to create a new message.
 */
export declare const AccessTokenSchema: GenMessage<AccessToken>;
/**
 * GetUserByIDRequest retrieves a user by their unique identifier.
 *
 * @generated from message api.vapor.v1.GetUserByIDRequest
 */
export type GetUserByIDRequest = Message<"api.vapor.v1.GetUserByIDRequest"> & {
    /**
     * User ID to retrieve (MongoDB ObjectID).
     * @required
     *
     * @generated from field: string id = 1;
     */
    id: string;
};
/**
 * Describes the message api.vapor.v1.GetUserByIDRequest.
 * Use `create(GetUserByIDRequestSchema)` to create a new message.
 */
export declare const GetUserByIDRequestSchema: GenMessage<GetUserByIDRequest>;
/**
 * GetUserByIDResponse contains the requested user's information.
 *
 * @generated from message api.vapor.v1.GetUserByIDResponse
 */
export type GetUserByIDResponse = Message<"api.vapor.v1.GetUserByIDResponse"> & {
    /**
     * User object if found, null if not found.
     *
     * @generated from field: api.vapor.v1.User user = 1;
     */
    user?: User;
};
/**
 * Describes the message api.vapor.v1.GetUserByIDResponse.
 * Use `create(GetUserByIDResponseSchema)` to create a new message.
 */
export declare const GetUserByIDResponseSchema: GenMessage<GetUserByIDResponse>;
/**
 * GetUserByEmailRequest retrieves a user by their email address.
 *
 * @generated from message api.vapor.v1.GetUserByEmailRequest
 */
export type GetUserByEmailRequest = Message<"api.vapor.v1.GetUserByEmailRequest"> & {
    /**
     * Email address to search for.
     * Must be a valid email format.
     * @required
     *
     * @generated from field: string email = 1;
     */
    email: string;
};
/**
 * Describes the message api.vapor.v1.GetUserByEmailRequest.
 * Use `create(GetUserByEmailRequestSchema)` to create a new message.
 */
export declare const GetUserByEmailRequestSchema: GenMessage<GetUserByEmailRequest>;
/**
 * GetUserByEmailResponse contains the user with the specified email.
 *
 * @generated from message api.vapor.v1.GetUserByEmailResponse
 */
export type GetUserByEmailResponse = Message<"api.vapor.v1.GetUserByEmailResponse"> & {
    /**
     * User object if found, null if not found.
     *
     * @generated from field: api.vapor.v1.User user = 1;
     */
    user?: User;
};
/**
 * Describes the message api.vapor.v1.GetUserByEmailResponse.
 * Use `create(GetUserByEmailResponseSchema)` to create a new message.
 */
export declare const GetUserByEmailResponseSchema: GenMessage<GetUserByEmailResponse>;
/**
 * GetChannelByIDRequest retrieves a channel by its unique identifier.
 *
 * @generated from message api.vapor.v1.GetChannelByIDRequest
 */
export type GetChannelByIDRequest = Message<"api.vapor.v1.GetChannelByIDRequest"> & {
    /**
     * Channel ID to retrieve (MongoDB ObjectID).
     * @required
     *
     * @generated from field: string id = 1;
     */
    id: string;
};
/**
 * Describes the message api.vapor.v1.GetChannelByIDRequest.
 * Use `create(GetChannelByIDRequestSchema)` to create a new message.
 */
export declare const GetChannelByIDRequestSchema: GenMessage<GetChannelByIDRequest>;
/**
 * GetChannelByIDResponse contains the requested channel's information.
 *
 * @generated from message api.vapor.v1.GetChannelByIDResponse
 */
export type GetChannelByIDResponse = Message<"api.vapor.v1.GetChannelByIDResponse"> & {
    /**
     * Channel object if found, null if not found.
     *
     * @generated from field: api.vapor.v1.Channel channel = 1;
     */
    channel?: Channel;
};
/**
 * Describes the message api.vapor.v1.GetChannelByIDResponse.
 * Use `create(GetChannelByIDResponseSchema)` to create a new message.
 */
export declare const GetChannelByIDResponseSchema: GenMessage<GetChannelByIDResponse>;
/**
 * GetChannelByConnectionIDRequest retrieves a channel by its OAuth connection.
 *
 * @generated from message api.vapor.v1.GetChannelByConnectionIDRequest
 */
export type GetChannelByConnectionIDRequest = Message<"api.vapor.v1.GetChannelByConnectionIDRequest"> & {
    /**
     * Connection ID linking the channel to a user.
     * @required
     *
     * @generated from field: string connection_id = 1;
     */
    connectionId: string;
};
/**
 * Describes the message api.vapor.v1.GetChannelByConnectionIDRequest.
 * Use `create(GetChannelByConnectionIDRequestSchema)` to create a new message.
 */
export declare const GetChannelByConnectionIDRequestSchema: GenMessage<GetChannelByConnectionIDRequest>;
/**
 * GetChannelByConnectionIDResponse contains the channel linked to the connection.
 *
 * @generated from message api.vapor.v1.GetChannelByConnectionIDResponse
 */
export type GetChannelByConnectionIDResponse = Message<"api.vapor.v1.GetChannelByConnectionIDResponse"> & {
    /**
     * Channel object if found, null if not found.
     *
     * @generated from field: api.vapor.v1.Channel channel = 1;
     */
    channel?: Channel;
};
/**
 * Describes the message api.vapor.v1.GetChannelByConnectionIDResponse.
 * Use `create(GetChannelByConnectionIDResponseSchema)` to create a new message.
 */
export declare const GetChannelByConnectionIDResponseSchema: GenMessage<GetChannelByConnectionIDResponse>;
/**
 * GetChannelAccessTokenRequest retrieves OAuth tokens for a channel.
 * Requires appropriate authorization to access channel tokens.
 *
 * @generated from message api.vapor.v1.GetChannelAccessTokenRequest
 */
export type GetChannelAccessTokenRequest = Message<"api.vapor.v1.GetChannelAccessTokenRequest"> & {
    /**
     * Channel ID to get access tokens for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.GetChannelAccessTokenRequest.
 * Use `create(GetChannelAccessTokenRequestSchema)` to create a new message.
 */
export declare const GetChannelAccessTokenRequestSchema: GenMessage<GetChannelAccessTokenRequest>;
/**
 * GetChannelAccessTokenResponse contains the channel's OAuth tokens.
 *
 * @generated from message api.vapor.v1.GetChannelAccessTokenResponse
 */
export type GetChannelAccessTokenResponse = Message<"api.vapor.v1.GetChannelAccessTokenResponse"> & {
    /**
     * OAuth access token for the channel's platform API.
     * Tokens are decrypted before returning.
     *
     * @generated from field: api.vapor.v1.AccessToken access_token = 1;
     */
    accessToken?: AccessToken;
};
/**
 * Describes the message api.vapor.v1.GetChannelAccessTokenResponse.
 * Use `create(GetChannelAccessTokenResponseSchema)` to create a new message.
 */
export declare const GetChannelAccessTokenResponseSchema: GenMessage<GetChannelAccessTokenResponse>;
/**
 * GetChannelByProviderIDRequest retrieves a channel by platform-specific ID.
 *
 * @generated from message api.vapor.v1.GetChannelByProviderIDRequest
 */
export type GetChannelByProviderIDRequest = Message<"api.vapor.v1.GetChannelByProviderIDRequest"> & {
    /**
     * Platform-specific channel identifier.
     * @required
     *
     * @generated from field: string provider_id = 1;
     */
    providerId: string;
    /**
     * Streaming platform name.
     * Valid values: "twitch", "youtube", "facebook", "trovo", "kick", "tiktok", "instagram"
     * @required
     *
     * @generated from field: string provider = 2;
     */
    provider: string;
};
/**
 * Describes the message api.vapor.v1.GetChannelByProviderIDRequest.
 * Use `create(GetChannelByProviderIDRequestSchema)` to create a new message.
 */
export declare const GetChannelByProviderIDRequestSchema: GenMessage<GetChannelByProviderIDRequest>;
/**
 * GetChannelByProviderIDResponse contains the channel from the specified platform.
 *
 * @generated from message api.vapor.v1.GetChannelByProviderIDResponse
 */
export type GetChannelByProviderIDResponse = Message<"api.vapor.v1.GetChannelByProviderIDResponse"> & {
    /**
     * Channel object if found, null if not found.
     *
     * @generated from field: api.vapor.v1.Channel channel = 1;
     */
    channel?: Channel;
};
/**
 * Describes the message api.vapor.v1.GetChannelByProviderIDResponse.
 * Use `create(GetChannelByProviderIDResponseSchema)` to create a new message.
 */
export declare const GetChannelByProviderIDResponseSchema: GenMessage<GetChannelByProviderIDResponse>;
/**
 * LoginMeta contains metadata about a login attempt for security tracking.
 * This information helps detect suspicious activity and provides audit trails.
 *
 * @generated from message api.vapor.v1.LoginMeta
 */
export type LoginMeta = Message<"api.vapor.v1.LoginMeta"> & {
    /**
     * User agent string from the client's browser/application.
     * Used to identify the client software and version.
     *
     * @generated from field: optional string user_agent = 2;
     */
    userAgent?: string;
    /**
     * IP address of the client making the login request.
     * Used for security monitoring and geographic verification.
     *
     * @generated from field: optional string remote_ip = 3;
     */
    remoteIp?: string;
    /**
     * Country code (ISO 3166-1 alpha-2) of the login location.
     * Examples: "US", "GB", "DE", "JP"
     *
     * @generated from field: optional string country = 4;
     */
    country?: string;
    /**
     * City name of the login location.
     *
     * @generated from field: optional string city = 5;
     */
    city?: string;
    /**
     * Region/state/province of the login location.
     *
     * @generated from field: optional string region = 6;
     */
    region?: string;
    /**
     * Continent of the login location.
     * Examples: "North America", "Europe", "Asia"
     *
     * @generated from field: optional string continent = 7;
     */
    continent?: string;
    /**
     * Geographic latitude of the login location.
     * Range: -90.0 to 90.0
     *
     * @generated from field: optional float latitude = 8;
     */
    latitude?: number;
    /**
     * Geographic longitude of the login location.
     * Range: -180.0 to 180.0
     *
     * @generated from field: optional float longitude = 9;
     */
    longitude?: number;
};
/**
 * Describes the message api.vapor.v1.LoginMeta.
 * Use `create(LoginMetaSchema)` to create a new message.
 */
export declare const LoginMetaSchema: GenMessage<LoginMeta>;
/**
 * LoginRequest contains OAuth provider data for streamer login/signup.
 * This creates a complete streamer account with channel functionality.
 * See AuthService.Login for details on what gets created.
 *
 * @generated from message api.vapor.v1.LoginRequest
 */
export type LoginRequest = Message<"api.vapor.v1.LoginRequest"> & {
    /**
     * provider is the provider of the connection.
     *
     * @generated from field: string provider = 1;
     */
    provider: string;
    /**
     * provider_id is the id of the provider.
     *
     * @generated from field: string provider_id = 2;
     */
    providerId: string;
    /**
     * username is the username of the user.
     *
     * @generated from field: string username = 3;
     */
    username: string;
    /**
     * display_name is the display name of the user.
     *
     * @generated from field: string display_name = 4;
     */
    displayName: string;
    /**
     * email is the email of the user.
     *
     * @generated from field: string email = 5;
     */
    email: string;
    /**
     * avatar is the avatar of the user.
     *
     * @generated from field: string avatar = 6;
     */
    avatar: string;
    /**
     * broadcaster_type is the broadcaster type of the user.
     *
     * @generated from field: string broadcaster_type = 7;
     */
    broadcasterType: string;
    /**
     * scopes is the scopes of the user.
     *
     * @generated from field: repeated string scopes = 8;
     */
    scopes: string[];
    /**
     * email_verified is the email verified of the user.
     *
     * @generated from field: bool email_verified = 9;
     */
    emailVerified: boolean;
    /**
     * access_token is the access token of the user.
     *
     * @generated from field: string access_token = 10;
     */
    accessToken: string;
    /**
     * refresh_token is the refresh token of the user.
     *
     * @generated from field: string refresh_token = 11;
     */
    refreshToken: string;
    /**
     * expires_at is the expires at of the access token.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 12;
     */
    expiresAt?: Timestamp;
    /**
     * country is the country of the user.
     *
     * @generated from field: string country = 13;
     */
    country: string;
    /**
     * language is the language of the user.
     *
     * @generated from field: string language = 14;
     */
    language: string;
    /**
     * meta is the meta of the login.
     *
     * @generated from field: api.vapor.v1.LoginMeta meta = 15;
     */
    meta?: LoginMeta;
    /**
     * Type of login determining what resources are created.
     * Streamers get channels, others get basic user accounts.
     *
     * @generated from field: api.vapor.v1.LoginRequest.LoginType login_type = 16;
     */
    loginType: LoginRequest_LoginType;
};
/**
 * Describes the message api.vapor.v1.LoginRequest.
 * Use `create(LoginRequestSchema)` to create a new message.
 */
export declare const LoginRequestSchema: GenMessage<LoginRequest>;
/**
 * LoginType specifies the type of account being created/accessed.
 *
 * @generated from enum api.vapor.v1.LoginRequest.LoginType
 */
export declare enum LoginRequest_LoginType {
    /**
     * Default unspecified type (should not be used).
     *
     * @generated from enum value: LOGIN_TYPE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Streamer login - creates full channel and broadcasting capabilities.
     *
     * @generated from enum value: LOGIN_TYPE_STREAMER = 1;
     */
    STREAMER = 1,
    /**
     * Staff login - internal team member access.
     *
     * @generated from enum value: LOGIN_TYPE_STAFF = 2;
     */
    STAFF = 2,
    /**
     * Advertiser login - advertising partner access.
     *
     * @generated from enum value: LOGIN_TYPE_ADVERTISER = 3;
     */
    ADVERTISER = 3
}
/**
 * Describes the enum api.vapor.v1.LoginRequest.LoginType.
 */
export declare const LoginRequest_LoginTypeSchema: GenEnum<LoginRequest_LoginType>;
/**
 * LoginResponse contains the created session and authentication data.
 * The user now has a complete streamer account with channel access.
 *
 * @generated from message api.vapor.v1.LoginResponse
 */
export type LoginResponse = Message<"api.vapor.v1.LoginResponse"> & {
    /**
     * session_id is the id of the session.
     *
     * @generated from field: string session_id = 1;
     */
    sessionId: string;
    /**
     * user_id is the id of the user.
     *
     * @generated from field: string user_id = 2;
     */
    userId: string;
    /**
     * JWT authentication token created by Vapor.
     * Used for platform-wide authentication.
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string token = 3;
     */
    token: string;
    /**
     * token_type is the type of the token.
     *
     * @generated from field: string token_type = 4;
     */
    tokenType: string;
    /**
     * token_name is the name of the cookie to set for this token.
     * Examples: "vapor_token", "se_token"
     *
     * @generated from field: string token_name = 5;
     */
    tokenName: string;
};
/**
 * Describes the message api.vapor.v1.LoginResponse.
 * Use `create(LoginResponseSchema)` to create a new message.
 */
export declare const LoginResponseSchema: GenMessage<LoginResponse>;
/**
 * UnlinkRequest removes a channel's connection to a user.
 * This disconnects the OAuth link but doesn't delete the channel.
 *
 * @generated from message api.vapor.v1.UnlinkRequest
 */
export type UnlinkRequest = Message<"api.vapor.v1.UnlinkRequest"> & {
    /**
     * ID of the user requesting the unlink.
     * Must have owner permission for the channel.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * ID of the channel to unlink.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.UnlinkRequest.
 * Use `create(UnlinkRequestSchema)` to create a new message.
 */
export declare const UnlinkRequestSchema: GenMessage<UnlinkRequest>;
/**
 * UnlinkResponse confirms the channel was successfully unlinked.
 *
 * @generated from message api.vapor.v1.UnlinkResponse
 */
export type UnlinkResponse = Message<"api.vapor.v1.UnlinkResponse"> & {};
/**
 * Describes the message api.vapor.v1.UnlinkResponse.
 * Use `create(UnlinkResponseSchema)` to create a new message.
 */
export declare const UnlinkResponseSchema: GenMessage<UnlinkResponse>;
/**
 * ImpersonateChannelRequest allows authorized users to act as a channel.
 * Used for support and administrative purposes.
 * Requires elevated permissions.
 *
 * @generated from message api.vapor.v1.ImpersonateChannelRequest
 */
export type ImpersonateChannelRequest = Message<"api.vapor.v1.ImpersonateChannelRequest"> & {
    /**
     * ID of the user performing the impersonation.
     * Must have appropriate admin/support role.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * ID of the channel to impersonate.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Metadata about the impersonation for audit logging.
     *
     * @generated from field: api.vapor.v1.LoginMeta meta = 3;
     */
    meta?: LoginMeta;
};
/**
 * Describes the message api.vapor.v1.ImpersonateChannelRequest.
 * Use `create(ImpersonateChannelRequestSchema)` to create a new message.
 */
export declare const ImpersonateChannelRequestSchema: GenMessage<ImpersonateChannelRequest>;
/**
 * ImpersonateChannelResponse provides temporary access to act as a channel.
 *
 * @generated from message api.vapor.v1.ImpersonateChannelResponse
 */
export type ImpersonateChannelResponse = Message<"api.vapor.v1.ImpersonateChannelResponse"> & {
    /**
     * JWT token for the impersonation session.
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string token = 1;
     */
    token: string;
    /**
     * Session ID for tracking the impersonation.
     *
     * @generated from field: string session_id = 2;
     */
    sessionId: string;
};
/**
 * Describes the message api.vapor.v1.ImpersonateChannelResponse.
 * Use `create(ImpersonateChannelResponseSchema)` to create a new message.
 */
export declare const ImpersonateChannelResponseSchema: GenMessage<ImpersonateChannelResponse>;
/**
 * WhoamiRequest retrieves information about the authenticated user.
 * Vapor creates and validates JWT tokens for the platform.
 *
 * @generated from message api.vapor.v1.WhoamiRequest
 */
export type WhoamiRequest = Message<"api.vapor.v1.WhoamiRequest"> & {
    /**
     * JWT authentication token created by this service.
     * @required
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string token = 1;
     */
    token: string;
    /**
     * @generated from field: api.vapor.v1.TokenType token_type = 2;
     */
    tokenType: TokenType;
};
/**
 * Describes the message api.vapor.v1.WhoamiRequest.
 * Use `create(WhoamiRequestSchema)` to create a new message.
 */
export declare const WhoamiRequestSchema: GenMessage<WhoamiRequest>;
/**
 * WhoamiResponse contains complete information about the authenticated user.
 *
 * @generated from message api.vapor.v1.WhoamiResponse
 */
export type WhoamiResponse = Message<"api.vapor.v1.WhoamiResponse"> & {
    /**
     * User ID of the authenticated user.
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID of the authenticated user. (optional)
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * All channel authorizations for this user. (optional)
     * Lists every channel the user can access and their role.
     *
     * @generated from field: repeated api.vapor.v1.Authorization authorizations = 3;
     */
    authorizations: Authorization[];
};
/**
 * Describes the message api.vapor.v1.WhoamiResponse.
 * Use `create(WhoamiResponseSchema)` to create a new message.
 */
export declare const WhoamiResponseSchema: GenMessage<WhoamiResponse>;
/**
 * UpdateAccessTokenRequest updates OAuth tokens for a channel.
 * Used when tokens are refreshed or re-authorized.
 *
 * @generated from message api.vapor.v1.UpdateAccessTokenRequest
 */
export type UpdateAccessTokenRequest = Message<"api.vapor.v1.UpdateAccessTokenRequest"> & {
    /**
     * Channel ID to update tokens for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
    /**
     * New OAuth access token from the platform.
     * @required
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string access_token = 2;
     */
    accessToken: string;
    /**
     * New OAuth refresh token (if provided by platform).
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string refresh_token = 3;
     */
    refreshToken: string;
    /**
     * When the new access token expires.
     * @required
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 4;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.UpdateAccessTokenRequest.
 * Use `create(UpdateAccessTokenRequestSchema)` to create a new message.
 */
export declare const UpdateAccessTokenRequestSchema: GenMessage<UpdateAccessTokenRequest>;
/**
 * UpdateAccessTokenResponse confirms the tokens were successfully updated.
 *
 * @generated from message api.vapor.v1.UpdateAccessTokenResponse
 */
export type UpdateAccessTokenResponse = Message<"api.vapor.v1.UpdateAccessTokenResponse"> & {};
/**
 * Describes the message api.vapor.v1.UpdateAccessTokenResponse.
 * Use `create(UpdateAccessTokenResponseSchema)` to create a new message.
 */
export declare const UpdateAccessTokenResponseSchema: GenMessage<UpdateAccessTokenResponse>;
/**
 * SetPrimaryChannelRequest designates a channel as the user's primary.
 * The primary channel is used as the default for operations.
 *
 * @generated from message api.vapor.v1.SetPrimaryChannelRequest
 */
export type SetPrimaryChannelRequest = Message<"api.vapor.v1.SetPrimaryChannelRequest"> & {
    /**
     * User ID to update.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID to set as primary.
     * User must have authorization for this channel.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.SetPrimaryChannelRequest.
 * Use `create(SetPrimaryChannelRequestSchema)` to create a new message.
 */
export declare const SetPrimaryChannelRequestSchema: GenMessage<SetPrimaryChannelRequest>;
/**
 * SetPrimaryChannelResponse confirms the primary channel was updated.
 *
 * @generated from message api.vapor.v1.SetPrimaryChannelResponse
 */
export type SetPrimaryChannelResponse = Message<"api.vapor.v1.SetPrimaryChannelResponse"> & {};
/**
 * Describes the message api.vapor.v1.SetPrimaryChannelResponse.
 * Use `create(SetPrimaryChannelResponseSchema)` to create a new message.
 */
export declare const SetPrimaryChannelResponseSchema: GenMessage<SetPrimaryChannelResponse>;
/**
 * SuspendUserRequest suspends or unsuspends a user account.
 * Suspended users cannot perform any actions on the platform.
 *
 * @generated from message api.vapor.v1.SuspendUserRequest
 */
export type SuspendUserRequest = Message<"api.vapor.v1.SuspendUserRequest"> & {
    /**
     * User ID to suspend/unsuspend.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Reason for suspension (for audit trail).
     * Required when suspending, optional when unsuspending.
     *
     * @generated from field: string reason = 2;
     */
    reason: string;
    /**
     * Suspension state.
     * true = suspend the user, false = unsuspend the user
     * @required
     *
     * @generated from field: bool enabled = 3;
     */
    enabled: boolean;
};
/**
 * Describes the message api.vapor.v1.SuspendUserRequest.
 * Use `create(SuspendUserRequestSchema)` to create a new message.
 */
export declare const SuspendUserRequestSchema: GenMessage<SuspendUserRequest>;
/**
 * SuspendUserResponse confirms the user suspension status was updated.
 *
 * @generated from message api.vapor.v1.SuspendUserResponse
 */
export type SuspendUserResponse = Message<"api.vapor.v1.SuspendUserResponse"> & {};
/**
 * Describes the message api.vapor.v1.SuspendUserResponse.
 * Use `create(SuspendUserResponseSchema)` to create a new message.
 */
export declare const SuspendUserResponseSchema: GenMessage<SuspendUserResponse>;
/**
 * CreateUserRequest contains OAuth provider data for creating staff/advertiser accounts.
 * Unlike LoginRequest, this creates a simplified user without channel functionality.
 * Use this for non-streamer users who need basic platform access.
 *
 * Key differences from LoginRequest:
 * - No broadcaster_type, country, language fields (streamer-specific)
 * - No LoginMeta (geolocation tracking for security)
 * - Includes role field to specify user type (staff, advertiser, etc.)
 * - Does not create channels, only user + connection records
 *
 * @generated from message api.vapor.v1.CreateUserRequest
 */
export type CreateUserRequest = Message<"api.vapor.v1.CreateUserRequest"> & {
    /**
     * provider is the OAuth provider (e.g. "google", "github", "microsoft").
     * Use standard provider names for consistency across the platform.
     *
     * @generated from field: string provider = 1;
     */
    provider: string;
    /**
     * provider_id is the unique identifier from the OAuth provider.
     * This must be unique per provider to prevent duplicate accounts.
     *
     * @generated from field: string provider_id = 2;
     */
    providerId: string;
    /**
     * username is the username/handle from the provider.
     * This will be used as the initial display name for the user.
     *
     * @generated from field: string username = 3;
     */
    username: string;
    /**
     * display_name is the human-readable name from the provider.
     * This may be different from username (e.g. "John Doe" vs "johndoe").
     *
     * @generated from field: string display_name = 4;
     */
    displayName: string;
    /**
     * email is the verified email address from the provider.
     * Must be verified by the OAuth provider for security.
     *
     * @generated from field: string email = 5;
     */
    email: string;
    /**
     * avatar is the URL to the profile picture from the provider.
     * This will be used as the user's initial profile image.
     *
     * @generated from field: string avatar = 6;
     */
    avatar: string;
    /**
     * System-wide role for the user.
     * Valid values: "user", "staff", "admin"
     * This is separate from channel-level authorizations.
     *
     * @generated from field: string role = 7;
     */
    role: string;
    /**
     * scopes are the OAuth permissions granted.
     *
     * @generated from field: repeated string scopes = 8;
     */
    scopes: string[];
    /**
     * email_verified indicates if the email has been verified by the provider.
     *
     * @generated from field: bool email_verified = 9;
     */
    emailVerified: boolean;
    /**
     * access_token is the OAuth access token.
     *
     * @generated from field: string access_token = 10;
     */
    accessToken: string;
    /**
     * refresh_token is used to obtain new access tokens.
     *
     * @generated from field: string refresh_token = 11;
     */
    refreshToken: string;
    /**
     * expires_at is when the access token will expire.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 12;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.CreateUserRequest.
 * Use `create(CreateUserRequestSchema)` to create a new message.
 */
export declare const CreateUserRequestSchema: GenMessage<CreateUserRequest>;
/**
 * CreateUserResponse contains the IDs of the created user and connection.
 * The user account is now ready for basic platform access.
 * Note: No session or token is created - the user must authenticate separately.
 *
 * @generated from message api.vapor.v1.CreateUserResponse
 */
export type CreateUserResponse = Message<"api.vapor.v1.CreateUserResponse"> & {
    /**
     * user_id is the unique identifier of the created user record.
     * Use this for subsequent API calls that require user identification.
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * connection_id is the unique identifier of the created OAuth connection.
     * This links the user to their provider account for future authentication.
     *
     * @generated from field: string connection_id = 2;
     */
    connectionId: string;
};
/**
 * Describes the message api.vapor.v1.CreateUserResponse.
 * Use `create(CreateUserResponseSchema)` to create a new message.
 */
export declare const CreateUserResponseSchema: GenMessage<CreateUserResponse>;
/**
 * ListUserChannelsRequest retrieves all channels accessible by a user.
 * Returns channels where the user has any authorization level.
 *
 * @generated from message api.vapor.v1.ListUserChannelsRequest
 */
export type ListUserChannelsRequest = Message<"api.vapor.v1.ListUserChannelsRequest"> & {
    /**
     * User ID to list channels for.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
};
/**
 * Describes the message api.vapor.v1.ListUserChannelsRequest.
 * Use `create(ListUserChannelsRequestSchema)` to create a new message.
 */
export declare const ListUserChannelsRequestSchema: GenMessage<ListUserChannelsRequest>;
/**
 * ListUserChannelsResponse contains all channels and authorizations for a user.
 *
 * @generated from message api.vapor.v1.ListUserChannelsResponse
 */
export type ListUserChannelsResponse = Message<"api.vapor.v1.ListUserChannelsResponse"> & {
    /**
     * List of all channels the user can access.
     * Ordered by authorization creation date (newest first).
     *
     * @generated from field: repeated api.vapor.v1.ListUserChannelsResponse.UserChannel channels = 1;
     */
    channels: ListUserChannelsResponse_UserChannel[];
};
/**
 * Describes the message api.vapor.v1.ListUserChannelsResponse.
 * Use `create(ListUserChannelsResponseSchema)` to create a new message.
 */
export declare const ListUserChannelsResponseSchema: GenMessage<ListUserChannelsResponse>;
/**
 * UserChannel pairs channel information with the user's authorization.
 *
 * @generated from message api.vapor.v1.ListUserChannelsResponse.UserChannel
 */
export type ListUserChannelsResponse_UserChannel = Message<"api.vapor.v1.ListUserChannelsResponse.UserChannel"> & {
    /**
     * Full channel details.
     *
     * @generated from field: api.vapor.v1.Channel channel = 1;
     */
    channel?: Channel;
    /**
     * User's authorization level for this channel.
     *
     * @generated from field: api.vapor.v1.Authorization authorization = 2;
     */
    authorization?: Authorization;
};
/**
 * Describes the message api.vapor.v1.ListUserChannelsResponse.UserChannel.
 * Use `create(ListUserChannelsResponse_UserChannelSchema)` to create a new message.
 */
export declare const ListUserChannelsResponse_UserChannelSchema: GenMessage<ListUserChannelsResponse_UserChannel>;
/**
 * CreateInviteRequest creates a new channel access invitation.
 * Only channel owners and administrators can create invitations.
 *
 * @generated from message api.vapor.v1.CreateInviteRequest
 */
export type CreateInviteRequest = Message<"api.vapor.v1.CreateInviteRequest"> & {
    /**
     * ID of the user creating the invitation.
     * Must have owner or admin role for the channel.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * ID of the channel to grant access to.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Role to grant when invitation is accepted.
     * Valid values: "administrator", "editor", "viewer"
     * Cannot grant "owner" role via invitation.
     * @required
     *
     * @generated from field: string role = 3;
     */
    role: string;
    /**
     * When the invitation expires.
     * If not set, uses default expiration (e.g., 7 days).
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 4;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.CreateInviteRequest.
 * Use `create(CreateInviteRequestSchema)` to create a new message.
 */
export declare const CreateInviteRequestSchema: GenMessage<CreateInviteRequest>;
/**
 * CreateInviteResponse contains the created invitation details.
 *
 * @generated from message api.vapor.v1.CreateInviteResponse
 */
export type CreateInviteResponse = Message<"api.vapor.v1.CreateInviteResponse"> & {
    /**
     * Created invitation object with unique code.
     *
     * @generated from field: api.vapor.v1.Invitation invite = 1;
     */
    invite?: Invitation;
    /**
     * Full URL for sharing the invitation.
     * Recipients can click this link to accept.
     *
     * @generated from field: string url = 2;
     */
    url: string;
};
/**
 * Describes the message api.vapor.v1.CreateInviteResponse.
 * Use `create(CreateInviteResponseSchema)` to create a new message.
 */
export declare const CreateInviteResponseSchema: GenMessage<CreateInviteResponse>;
/**
 * AcceptInviteRequest accepts a channel invitation.
 * Creates an authorization for the user with the specified role.
 *
 * @generated from message api.vapor.v1.AcceptInviteRequest
 */
export type AcceptInviteRequest = Message<"api.vapor.v1.AcceptInviteRequest"> & {
    /**
     * Unique invitation code from the invitation URL.
     * @required
     *
     * @generated from field: string code = 1;
     */
    code: string;
    /**
     * ID of the user accepting the invitation.
     * @required
     *
     * @generated from field: string user_id = 2;
     */
    userId: string;
};
/**
 * Describes the message api.vapor.v1.AcceptInviteRequest.
 * Use `create(AcceptInviteRequestSchema)` to create a new message.
 */
export declare const AcceptInviteRequestSchema: GenMessage<AcceptInviteRequest>;
/**
 * AcceptInviteResponse contains the created authorization.
 *
 * @generated from message api.vapor.v1.AcceptInviteResponse
 */
export type AcceptInviteResponse = Message<"api.vapor.v1.AcceptInviteResponse"> & {
    /**
     * New authorization granting the user channel access.
     *
     * @generated from field: api.vapor.v1.Authorization authorization = 1;
     */
    authorization?: Authorization;
};
/**
 * Describes the message api.vapor.v1.AcceptInviteResponse.
 * Use `create(AcceptInviteResponseSchema)` to create a new message.
 */
export declare const AcceptInviteResponseSchema: GenMessage<AcceptInviteResponse>;
/**
 * DeclineInviteRequest declines a channel invitation.
 * The invitation is marked as declined but not deleted.
 *
 * @generated from message api.vapor.v1.DeclineInviteRequest
 */
export type DeclineInviteRequest = Message<"api.vapor.v1.DeclineInviteRequest"> & {
    /**
     * Unique invitation code from the invitation URL.
     * @required
     *
     * @generated from field: string code = 1;
     */
    code: string;
    /**
     * ID of the user declining the invitation.
     * @required
     *
     * @generated from field: string user_id = 2;
     */
    userId: string;
};
/**
 * Describes the message api.vapor.v1.DeclineInviteRequest.
 * Use `create(DeclineInviteRequestSchema)` to create a new message.
 */
export declare const DeclineInviteRequestSchema: GenMessage<DeclineInviteRequest>;
/**
 * DeclineInviteResponse confirms the invitation was declined.
 *
 * @generated from message api.vapor.v1.DeclineInviteResponse
 */
export type DeclineInviteResponse = Message<"api.vapor.v1.DeclineInviteResponse"> & {};
/**
 * Describes the message api.vapor.v1.DeclineInviteResponse.
 * Use `create(DeclineInviteResponseSchema)` to create a new message.
 */
export declare const DeclineInviteResponseSchema: GenMessage<DeclineInviteResponse>;
/**
 * RevokeInviteRequest cancels a pending invitation.
 * Only the invitation creator or channel owner can revoke.
 *
 * @generated from message api.vapor.v1.RevokeInviteRequest
 */
export type RevokeInviteRequest = Message<"api.vapor.v1.RevokeInviteRequest"> & {
    /**
     * Unique invitation code to revoke.
     * @required
     *
     * @generated from field: string code = 1;
     */
    code: string;
    /**
     * ID of the user revoking the invitation.
     * Must be the creator or have admin/owner role.
     * @required
     *
     * @generated from field: string user_id = 2;
     */
    userId: string;
};
/**
 * Describes the message api.vapor.v1.RevokeInviteRequest.
 * Use `create(RevokeInviteRequestSchema)` to create a new message.
 */
export declare const RevokeInviteRequestSchema: GenMessage<RevokeInviteRequest>;
/**
 * RevokeInviteResponse confirms the invitation was revoked.
 *
 * @generated from message api.vapor.v1.RevokeInviteResponse
 */
export type RevokeInviteResponse = Message<"api.vapor.v1.RevokeInviteResponse"> & {};
/**
 * Describes the message api.vapor.v1.RevokeInviteResponse.
 * Use `create(RevokeInviteResponseSchema)` to create a new message.
 */
export declare const RevokeInviteResponseSchema: GenMessage<RevokeInviteResponse>;
/**
 * GetInvitesRequest lists all pending invitations for a channel.
 * Requires appropriate authorization to view channel invitations.
 *
 * @generated from message api.vapor.v1.GetInvitesRequest
 */
export type GetInvitesRequest = Message<"api.vapor.v1.GetInvitesRequest"> & {
    /**
     * Channel ID to list invitations for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.GetInvitesRequest.
 * Use `create(GetInvitesRequestSchema)` to create a new message.
 */
export declare const GetInvitesRequestSchema: GenMessage<GetInvitesRequest>;
/**
 * GetInvitesResponse contains all pending invitations for the channel.
 *
 * @generated from message api.vapor.v1.GetInvitesResponse
 */
export type GetInvitesResponse = Message<"api.vapor.v1.GetInvitesResponse"> & {
    /**
     * List of pending invitations.
     * Does not include accepted, declined, or expired invitations.
     *
     * @generated from field: repeated api.vapor.v1.Invitation invites = 1;
     */
    invites: Invitation[];
};
/**
 * Describes the message api.vapor.v1.GetInvitesResponse.
 * Use `create(GetInvitesResponseSchema)` to create a new message.
 */
export declare const GetInvitesResponseSchema: GenMessage<GetInvitesResponse>;
/**
 * GetInviteByCodeRequest retrieves invitation details by code.
 * Used to display invitation information before accepting.
 *
 * @generated from message api.vapor.v1.GetInviteByCodeRequest
 */
export type GetInviteByCodeRequest = Message<"api.vapor.v1.GetInviteByCodeRequest"> & {
    /**
     * Unique invitation code to look up.
     * @required
     *
     * @generated from field: string code = 1;
     */
    code: string;
};
/**
 * Describes the message api.vapor.v1.GetInviteByCodeRequest.
 * Use `create(GetInviteByCodeRequestSchema)` to create a new message.
 */
export declare const GetInviteByCodeRequestSchema: GenMessage<GetInviteByCodeRequest>;
/**
 * GetInviteByCodeResponse contains the invitation details.
 *
 * @generated from message api.vapor.v1.GetInviteByCodeResponse
 */
export type GetInviteByCodeResponse = Message<"api.vapor.v1.GetInviteByCodeResponse"> & {
    /**
     * Invitation object if found and valid.
     * Returns null if expired or not found.
     *
     * @generated from field: api.vapor.v1.Invitation invite = 1;
     */
    invite?: Invitation;
};
/**
 * Describes the message api.vapor.v1.GetInviteByCodeResponse.
 * Use `create(GetInviteByCodeResponseSchema)` to create a new message.
 */
export declare const GetInviteByCodeResponseSchema: GenMessage<GetInviteByCodeResponse>;
/**
 * ListChannelUsersRequest retrieves all users with channel access.
 * Returns users at all authorization levels.
 *
 * @generated from message api.vapor.v1.ListChannelUsersRequest
 */
export type ListChannelUsersRequest = Message<"api.vapor.v1.ListChannelUsersRequest"> & {
    /**
     * Channel ID to list users for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.ListChannelUsersRequest.
 * Use `create(ListChannelUsersRequestSchema)` to create a new message.
 */
export declare const ListChannelUsersRequestSchema: GenMessage<ListChannelUsersRequest>;
/**
 * ListChannelUsersResponse contains all users and their authorizations for a channel.
 *
 * @generated from message api.vapor.v1.ListChannelUsersResponse
 */
export type ListChannelUsersResponse = Message<"api.vapor.v1.ListChannelUsersResponse"> & {
    /**
     * List of all users with channel access.
     * Ordered by role hierarchy (owners first, then admins, editors, viewers).
     *
     * @generated from field: repeated api.vapor.v1.ListChannelUsersResponse.ChannelUser users = 1;
     */
    users: ListChannelUsersResponse_ChannelUser[];
};
/**
 * Describes the message api.vapor.v1.ListChannelUsersResponse.
 * Use `create(ListChannelUsersResponseSchema)` to create a new message.
 */
export declare const ListChannelUsersResponseSchema: GenMessage<ListChannelUsersResponse>;
/**
 * ChannelUser pairs user information with their channel authorization.
 *
 * @generated from message api.vapor.v1.ListChannelUsersResponse.ChannelUser
 */
export type ListChannelUsersResponse_ChannelUser = Message<"api.vapor.v1.ListChannelUsersResponse.ChannelUser"> & {
    /**
     * Full user profile details.
     *
     * @generated from field: api.vapor.v1.User user = 1;
     */
    user?: User;
    /**
     * User's authorization level for this channel.
     *
     * @generated from field: api.vapor.v1.Authorization authorization = 2;
     */
    authorization?: Authorization;
};
/**
 * Describes the message api.vapor.v1.ListChannelUsersResponse.ChannelUser.
 * Use `create(ListChannelUsersResponse_ChannelUserSchema)` to create a new message.
 */
export declare const ListChannelUsersResponse_ChannelUserSchema: GenMessage<ListChannelUsersResponse_ChannelUser>;
/**
 * GetRolesRequest is empty as no parameters are needed.
 *
 * @generated from message api.vapor.v1.GetRolesRequest
 */
export type GetRolesRequest = Message<"api.vapor.v1.GetRolesRequest"> & {};
/**
 * Describes the message api.vapor.v1.GetRolesRequest.
 * Use `create(GetRolesRequestSchema)` to create a new message.
 */
export declare const GetRolesRequestSchema: GenMessage<GetRolesRequest>;
/**
 * GetRolesResponse contains all available roles and their permissions.
 *
 * @generated from message api.vapor.v1.GetRolesResponse
 */
export type GetRolesResponse = Message<"api.vapor.v1.GetRolesResponse"> & {
    /**
     * List of all available channel roles.
     *
     * @generated from field: repeated api.vapor.v1.GetRolesResponse.RoleInfo roles = 1;
     */
    roles: GetRolesResponse_RoleInfo[];
};
/**
 * Describes the message api.vapor.v1.GetRolesResponse.
 * Use `create(GetRolesResponseSchema)` to create a new message.
 */
export declare const GetRolesResponseSchema: GenMessage<GetRolesResponse>;
/**
 * RoleInfo describes a single role and its capabilities.
 *
 * @generated from message api.vapor.v1.GetRolesResponse.RoleInfo
 */
export type GetRolesResponse_RoleInfo = Message<"api.vapor.v1.GetRolesResponse.RoleInfo"> & {
    /**
     * Name of the role (e.g., "owner", "administrator", "editor").
     *
     * @generated from field: string name = 1;
     */
    name: string;
    /**
     * Human-readable display name for the role.
     *
     * @generated from field: string display_name = 2;
     */
    displayName: string;
    /**
     * Description of what this role can do.
     *
     * @generated from field: string description = 3;
     */
    description: string;
    /**
     * Hierarchy level (higher number = more permissions).
     *
     * @generated from field: int32 hierarchy_level = 4;
     */
    hierarchyLevel: number;
    /**
     * List of permission scopes this role has.
     *
     * @generated from field: repeated string scopes = 5;
     */
    scopes: string[];
};
/**
 * Describes the message api.vapor.v1.GetRolesResponse.RoleInfo.
 * Use `create(GetRolesResponse_RoleInfoSchema)` to create a new message.
 */
export declare const GetRolesResponse_RoleInfoSchema: GenMessage<GetRolesResponse_RoleInfo>;
/**
 * TransferOwnershipRequest contains the details for transferring channel ownership.
 *
 * @generated from message api.vapor.v1.TransferOwnershipRequest
 */
export type TransferOwnershipRequest = Message<"api.vapor.v1.TransferOwnershipRequest"> & {
    /**
     * Channel ID where ownership is being transferred.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
    /**
     * User ID of the current owner making the transfer.
     * @required
     *
     * @generated from field: string current_owner_id = 2;
     */
    currentOwnerId: string;
    /**
     * User ID of the new owner.
     * @required
     *
     * @generated from field: string new_owner_id = 3;
     */
    newOwnerId: string;
    /**
     * Optional reason for the transfer (for audit logging).
     *
     * @generated from field: string reason = 4;
     */
    reason: string;
};
/**
 * Describes the message api.vapor.v1.TransferOwnershipRequest.
 * Use `create(TransferOwnershipRequestSchema)` to create a new message.
 */
export declare const TransferOwnershipRequestSchema: GenMessage<TransferOwnershipRequest>;
/**
 * TransferOwnershipResponse confirms the ownership transfer.
 *
 * @generated from message api.vapor.v1.TransferOwnershipResponse
 */
export type TransferOwnershipResponse = Message<"api.vapor.v1.TransferOwnershipResponse"> & {
    /**
     * Confirmation message.
     *
     * @generated from field: string message = 1;
     */
    message: string;
    /**
     * The previous owner's new role (typically "administrator").
     *
     * @generated from field: string previous_owner_new_role = 2;
     */
    previousOwnerNewRole: string;
};
/**
 * Describes the message api.vapor.v1.TransferOwnershipResponse.
 * Use `create(TransferOwnershipResponseSchema)` to create a new message.
 */
export declare const TransferOwnershipResponseSchema: GenMessage<TransferOwnershipResponse>;
/**
 * AddChannelRequest contains OAuth provider data for adding a channel to a user.
 * This handles both new channel creation and channel ownership transfer.
 *
 * @generated from message api.vapor.v1.AddChannelRequest
 */
export type AddChannelRequest = Message<"api.vapor.v1.AddChannelRequest"> & {
    /**
     * user_id is the ID of the user to add the channel to.
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * provider is the OAuth provider (e.g. "twitch", "youtube").
     *
     * @generated from field: string provider = 2;
     */
    provider: string;
    /**
     * provider_id is the unique identifier from the OAuth provider.
     *
     * @generated from field: string provider_id = 3;
     */
    providerId: string;
    /**
     * username is the username from the provider.
     *
     * @generated from field: string username = 4;
     */
    username: string;
    /**
     * display_name is the display name from the provider.
     *
     * @generated from field: string display_name = 5;
     */
    displayName: string;
    /**
     * avatar is the URL to the profile picture from the provider.
     *
     * @generated from field: string avatar = 6;
     */
    avatar: string;
    /**
     * broadcaster_type is the broadcaster type (e.g. "partner", "affiliate").
     *
     * @generated from field: string broadcaster_type = 7;
     */
    broadcasterType: string;
    /**
     * scopes are the OAuth permissions granted.
     *
     * @generated from field: repeated string scopes = 8;
     */
    scopes: string[];
    /**
     * email is the email from the provider.
     *
     * @generated from field: string email = 9;
     */
    email: string;
    /**
     * email_verified indicates if the email has been verified by the provider.
     *
     * @generated from field: bool email_verified = 10;
     */
    emailVerified: boolean;
    /**
     * access_token is the OAuth access token.
     *
     * @generated from field: string access_token = 11;
     */
    accessToken: string;
    /**
     * refresh_token is used to obtain new access tokens.
     *
     * @generated from field: string refresh_token = 12;
     */
    refreshToken: string;
    /**
     * expires_at is when the access token will expire.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 13;
     */
    expiresAt?: Timestamp;
    /**
     * set_as_primary indicates if this channel should become the user's primary channel.
     *
     * @generated from field: bool set_as_primary = 14;
     */
    setAsPrimary: boolean;
};
/**
 * Describes the message api.vapor.v1.AddChannelRequest.
 * Use `create(AddChannelRequestSchema)` to create a new message.
 */
export declare const AddChannelRequestSchema: GenMessage<AddChannelRequest>;
/**
 * AddChannelResponse contains the result of adding a channel to a user.
 *
 * @generated from message api.vapor.v1.AddChannelResponse
 */
export type AddChannelResponse = Message<"api.vapor.v1.AddChannelResponse"> & {
    /**
     * channel_id is the ID of the channel that was added/transferred.
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
    /**
     * was_transferred indicates if the channel was transferred from another user.
     *
     * @generated from field: bool was_transferred = 2;
     */
    wasTransferred: boolean;
    /**
     * previous_owner_id is the ID of the previous owner if the channel was transferred.
     *
     * @generated from field: string previous_owner_id = 3;
     */
    previousOwnerId: string;
};
/**
 * Describes the message api.vapor.v1.AddChannelResponse.
 * Use `create(AddChannelResponseSchema)` to create a new message.
 */
export declare const AddChannelResponseSchema: GenMessage<AddChannelResponse>;
/**
 * ListUserSessionsRequest retrieves all active sessions for a user.
 * Useful for security auditing and session management.
 *
 * @generated from message api.vapor.v1.ListUserSessionsRequest
 */
export type ListUserSessionsRequest = Message<"api.vapor.v1.ListUserSessionsRequest"> & {
    /**
     * User ID to list sessions for.
     * If empty, lists sessions for the authenticated user.
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
};
/**
 * Describes the message api.vapor.v1.ListUserSessionsRequest.
 * Use `create(ListUserSessionsRequestSchema)` to create a new message.
 */
export declare const ListUserSessionsRequestSchema: GenMessage<ListUserSessionsRequest>;
/**
 * ListUserSessionsResponse contains all active sessions for the user.
 *
 * @generated from message api.vapor.v1.ListUserSessionsResponse
 */
export type ListUserSessionsResponse = Message<"api.vapor.v1.ListUserSessionsResponse"> & {
    /**
     * List of active sessions ordered by creation date (newest first).
     * Expired sessions are not included.
     *
     * @generated from field: repeated api.vapor.v1.Session sessions = 1;
     */
    sessions: Session[];
};
/**
 * Describes the message api.vapor.v1.ListUserSessionsResponse.
 * Use `create(ListUserSessionsResponseSchema)` to create a new message.
 */
export declare const ListUserSessionsResponseSchema: GenMessage<ListUserSessionsResponse>;
/**
 * GetSessionRequest retrieves detailed information about a session.
 * Used to verify session validity and get metadata.
 *
 * @generated from message api.vapor.v1.GetSessionRequest
 */
export type GetSessionRequest = Message<"api.vapor.v1.GetSessionRequest"> & {
    /**
     * Session ID to retrieve details for.
     * @required
     *
     * @generated from field: string session_id = 1;
     */
    sessionId: string;
};
/**
 * Describes the message api.vapor.v1.GetSessionRequest.
 * Use `create(GetSessionRequestSchema)` to create a new message.
 */
export declare const GetSessionRequestSchema: GenMessage<GetSessionRequest>;
/**
 * GetSessionResponse contains detailed session information with metadata.
 *
 * @generated from message api.vapor.v1.GetSessionResponse
 */
export type GetSessionResponse = Message<"api.vapor.v1.GetSessionResponse"> & {
    /**
     * Core session data including expiration.
     *
     * @generated from field: api.vapor.v1.Session session = 1;
     */
    session?: Session;
    /**
     * User who owns this session.
     *
     * @generated from field: api.vapor.v1.User user = 2;
     */
    user?: User;
    /**
     * Whether the session is currently valid.
     * False if expired or revoked.
     *
     * @generated from field: bool is_valid = 3;
     */
    isValid: boolean;
    /**
     * IP address from which the session was created.
     * Used for security monitoring.
     *
     * @generated from field: string ip_address = 4;
     */
    ipAddress: string;
    /**
     * Browser/client user agent string.
     * Helps identify the device/application.
     *
     * @generated from field: string user_agent = 5;
     */
    userAgent: string;
    /**
     * Last time this session was used for authentication.
     * Helps identify inactive sessions.
     *
     * @generated from field: google.protobuf.Timestamp last_accessed = 6;
     */
    lastAccessed?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.GetSessionResponse.
 * Use `create(GetSessionResponseSchema)` to create a new message.
 */
export declare const GetSessionResponseSchema: GenMessage<GetSessionResponse>;
/**
 * RevokeSessionRequest invalidates a specific user session.
 * Used to force logout from a specific device/location.
 *
 * @generated from message api.vapor.v1.RevokeSessionRequest
 */
export type RevokeSessionRequest = Message<"api.vapor.v1.RevokeSessionRequest"> & {
    /**
     * User ID who owns the session.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Session ID to revoke.
     * @required
     *
     * @generated from field: string session_id = 2;
     */
    sessionId: string;
    /**
     * Reason for revocation (for audit trail).
     * Examples: "Suspicious activity", "User request", "Password change"
     *
     * @generated from field: string reason = 3;
     */
    reason: string;
};
/**
 * Describes the message api.vapor.v1.RevokeSessionRequest.
 * Use `create(RevokeSessionRequestSchema)` to create a new message.
 */
export declare const RevokeSessionRequestSchema: GenMessage<RevokeSessionRequest>;
/**
 * RevokeSessionResponse confirms the session revocation status.
 *
 * @generated from message api.vapor.v1.RevokeSessionResponse
 */
export type RevokeSessionResponse = Message<"api.vapor.v1.RevokeSessionResponse"> & {
    /**
     * Whether the session was successfully revoked.
     * False if session not found or already revoked.
     *
     * @generated from field: bool success = 1;
     */
    success: boolean;
};
/**
 * Describes the message api.vapor.v1.RevokeSessionResponse.
 * Use `create(RevokeSessionResponseSchema)` to create a new message.
 */
export declare const RevokeSessionResponseSchema: GenMessage<RevokeSessionResponse>;
/**
 * RevokeAllUserSessionsRequest invalidates all sessions for a user.
 * Security feature to force re-authentication everywhere.
 *
 * @generated from message api.vapor.v1.RevokeAllUserSessionsRequest
 */
export type RevokeAllUserSessionsRequest = Message<"api.vapor.v1.RevokeAllUserSessionsRequest"> & {
    /**
     * User ID whose sessions to revoke.
     * If empty, revokes sessions for the authenticated user.
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Reason for mass revocation (for audit trail).
     * Examples: "Security breach", "Account recovery", "Password reset"
     *
     * @generated from field: string reason = 2;
     */
    reason: string;
    /**
     * Whether to keep the current session active.
     * Useful when user wants to logout everywhere else.
     *
     * @generated from field: bool except_current = 3;
     */
    exceptCurrent: boolean;
};
/**
 * Describes the message api.vapor.v1.RevokeAllUserSessionsRequest.
 * Use `create(RevokeAllUserSessionsRequestSchema)` to create a new message.
 */
export declare const RevokeAllUserSessionsRequestSchema: GenMessage<RevokeAllUserSessionsRequest>;
/**
 * RevokeAllUserSessionsResponse reports the mass revocation results.
 *
 * @generated from message api.vapor.v1.RevokeAllUserSessionsResponse
 */
export type RevokeAllUserSessionsResponse = Message<"api.vapor.v1.RevokeAllUserSessionsResponse"> & {
    /**
     * Number of sessions that were successfully revoked.
     * 0 if no active sessions were found.
     *
     * @generated from field: int32 revoked_count = 1;
     */
    revokedCount: number;
};
/**
 * Describes the message api.vapor.v1.RevokeAllUserSessionsResponse.
 * Use `create(RevokeAllUserSessionsResponseSchema)` to create a new message.
 */
export declare const RevokeAllUserSessionsResponseSchema: GenMessage<RevokeAllUserSessionsResponse>;
/**
 * CreateAuthorizationRequest grants a user access to a channel.
 * Direct authorization without invitation process.
 *
 * @generated from message api.vapor.v1.CreateAuthorizationRequest
 */
export type CreateAuthorizationRequest = Message<"api.vapor.v1.CreateAuthorizationRequest"> & {
    /**
     * User ID to grant channel access to.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID to grant access for.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Role to assign to the user.
     * Valid values: "owner", "administrator", "editor", "viewer"
     * If "owner", existing owner is demoted to "administrator".
     * @required
     *
     * @generated from field: string role = 3;
     */
    role: string;
    /**
     * Optional expiration for temporary access.
     * If not set, authorization is permanent.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 4;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.CreateAuthorizationRequest.
 * Use `create(CreateAuthorizationRequestSchema)` to create a new message.
 */
export declare const CreateAuthorizationRequestSchema: GenMessage<CreateAuthorizationRequest>;
/**
 * CreateAuthorizationResponse confirms the authorization was created.
 *
 * @generated from message api.vapor.v1.CreateAuthorizationResponse
 */
export type CreateAuthorizationResponse = Message<"api.vapor.v1.CreateAuthorizationResponse"> & {};
/**
 * Describes the message api.vapor.v1.CreateAuthorizationResponse.
 * Use `create(CreateAuthorizationResponseSchema)` to create a new message.
 */
export declare const CreateAuthorizationResponseSchema: GenMessage<CreateAuthorizationResponse>;
/**
 * UpdateAuthorizationRequest modifies a user's channel role.
 * Only channel owners and admins can update authorizations.
 *
 * @generated from message api.vapor.v1.UpdateAuthorizationRequest
 */
export type UpdateAuthorizationRequest = Message<"api.vapor.v1.UpdateAuthorizationRequest"> & {
    /**
     * User ID whose authorization to update.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID for the authorization.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * New role to assign.
     * Valid values: "owner", "administrator", "editor", "viewer"
     * If "owner", existing owner is demoted to "administrator".
     * @required
     *
     * @generated from field: string role = 3;
     */
    role: string;
    /**
     * New expiration time (optional).
     * Set to update or add expiration.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 4;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.UpdateAuthorizationRequest.
 * Use `create(UpdateAuthorizationRequestSchema)` to create a new message.
 */
export declare const UpdateAuthorizationRequestSchema: GenMessage<UpdateAuthorizationRequest>;
/**
 * UpdateAuthorizationResponse confirms the authorization was updated.
 *
 * @generated from message api.vapor.v1.UpdateAuthorizationResponse
 */
export type UpdateAuthorizationResponse = Message<"api.vapor.v1.UpdateAuthorizationResponse"> & {};
/**
 * Describes the message api.vapor.v1.UpdateAuthorizationResponse.
 * Use `create(UpdateAuthorizationResponseSchema)` to create a new message.
 */
export declare const UpdateAuthorizationResponseSchema: GenMessage<UpdateAuthorizationResponse>;
/**
 * RevokeAuthorizationRequest removes a user's channel access.
 * Cannot revoke the last owner of a channel.
 *
 * @generated from message api.vapor.v1.RevokeAuthorizationRequest
 */
export type RevokeAuthorizationRequest = Message<"api.vapor.v1.RevokeAuthorizationRequest"> & {
    /**
     * User ID whose authorization to revoke.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID to revoke access from.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Reason for revocation (for audit trail).
     * Examples: "No longer needed", "Security concern", "Role change"
     *
     * @generated from field: string reason = 3;
     */
    reason: string;
};
/**
 * Describes the message api.vapor.v1.RevokeAuthorizationRequest.
 * Use `create(RevokeAuthorizationRequestSchema)` to create a new message.
 */
export declare const RevokeAuthorizationRequestSchema: GenMessage<RevokeAuthorizationRequest>;
/**
 * RevokeAuthorizationResponse reports the revocation result.
 *
 * @generated from message api.vapor.v1.RevokeAuthorizationResponse
 */
export type RevokeAuthorizationResponse = Message<"api.vapor.v1.RevokeAuthorizationResponse"> & {
    /**
     * Whether the authorization was successfully revoked.
     *
     * @generated from field: bool success = 1;
     */
    success: boolean;
    /**
     * Error details if revocation failed.
     * Example: "cannot revoke last owner"
     *
     * @generated from field: string reason = 2;
     */
    reason: string;
};
/**
 * Describes the message api.vapor.v1.RevokeAuthorizationResponse.
 * Use `create(RevokeAuthorizationResponseSchema)` to create a new message.
 */
export declare const RevokeAuthorizationResponseSchema: GenMessage<RevokeAuthorizationResponse>;
/**
 * GetAuthorizationRequest checks if a user has channel access.
 * Returns the authorization if it exists.
 *
 * @generated from message api.vapor.v1.GetAuthorizationRequest
 */
export type GetAuthorizationRequest = Message<"api.vapor.v1.GetAuthorizationRequest"> & {
    /**
     * User ID to check authorization for.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID to check access to.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.GetAuthorizationRequest.
 * Use `create(GetAuthorizationRequestSchema)` to create a new message.
 */
export declare const GetAuthorizationRequestSchema: GenMessage<GetAuthorizationRequest>;
/**
 * GetAuthorizationResponse contains the user's channel authorization.
 *
 * @generated from message api.vapor.v1.GetAuthorizationResponse
 */
export type GetAuthorizationResponse = Message<"api.vapor.v1.GetAuthorizationResponse"> & {
    /**
     * Authorization if user has access, null otherwise.
     *
     * @generated from field: api.vapor.v1.Authorization authorization = 1;
     */
    authorization?: Authorization;
};
/**
 * Describes the message api.vapor.v1.GetAuthorizationResponse.
 * Use `create(GetAuthorizationResponseSchema)` to create a new message.
 */
export declare const GetAuthorizationResponseSchema: GenMessage<GetAuthorizationResponse>;
/**
 * ListUserAuthorizationsRequest retrieves all channel access for a user.
 * Returns authorizations across all channels.
 *
 * @generated from message api.vapor.v1.ListUserAuthorizationsRequest
 */
export type ListUserAuthorizationsRequest = Message<"api.vapor.v1.ListUserAuthorizationsRequest"> & {
    /**
     * User ID to list authorizations for.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
};
/**
 * Describes the message api.vapor.v1.ListUserAuthorizationsRequest.
 * Use `create(ListUserAuthorizationsRequestSchema)` to create a new message.
 */
export declare const ListUserAuthorizationsRequestSchema: GenMessage<ListUserAuthorizationsRequest>;
/**
 * ListUserAuthorizationsResponse contains all user's channel authorizations.
 *
 * @generated from message api.vapor.v1.ListUserAuthorizationsResponse
 */
export type ListUserAuthorizationsResponse = Message<"api.vapor.v1.ListUserAuthorizationsResponse"> & {
    /**
     * All channel authorizations for the user.
     * Ordered by creation date (newest first).
     *
     * @generated from field: repeated api.vapor.v1.Authorization authorizations = 1;
     */
    authorizations: Authorization[];
};
/**
 * Describes the message api.vapor.v1.ListUserAuthorizationsResponse.
 * Use `create(ListUserAuthorizationsResponseSchema)` to create a new message.
 */
export declare const ListUserAuthorizationsResponseSchema: GenMessage<ListUserAuthorizationsResponse>;
/**
 * ListChannelAuthorizationsRequest retrieves all users with channel access.
 * Returns authorizations at all role levels.
 *
 * @generated from message api.vapor.v1.ListChannelAuthorizationsRequest
 */
export type ListChannelAuthorizationsRequest = Message<"api.vapor.v1.ListChannelAuthorizationsRequest"> & {
    /**
     * Channel ID to list authorizations for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.ListChannelAuthorizationsRequest.
 * Use `create(ListChannelAuthorizationsRequestSchema)` to create a new message.
 */
export declare const ListChannelAuthorizationsRequestSchema: GenMessage<ListChannelAuthorizationsRequest>;
/**
 * ListChannelAuthorizationsResponse contains all channel authorizations.
 *
 * @generated from message api.vapor.v1.ListChannelAuthorizationsResponse
 */
export type ListChannelAuthorizationsResponse = Message<"api.vapor.v1.ListChannelAuthorizationsResponse"> & {
    /**
     * All user authorizations for the channel.
     * Ordered by role hierarchy (owners, admins, editors, viewers).
     *
     * @generated from field: repeated api.vapor.v1.Authorization authorizations = 1;
     */
    authorizations: Authorization[];
};
/**
 * Describes the message api.vapor.v1.ListChannelAuthorizationsResponse.
 * Use `create(ListChannelAuthorizationsResponseSchema)` to create a new message.
 */
export declare const ListChannelAuthorizationsResponseSchema: GenMessage<ListChannelAuthorizationsResponse>;
/**
 * CheckPermissionRequest verifies if a user has sufficient channel access.
 * Uses role hierarchy to check permissions.
 *
 * @generated from message api.vapor.v1.CheckPermissionRequest
 */
export type CheckPermissionRequest = Message<"api.vapor.v1.CheckPermissionRequest"> & {
    /**
     * User ID to check permissions for.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID to check access to.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Minimum role required for the operation.
     * Valid values: "owner", "administrator", "editor", "viewer"
     * User must have this role or higher.
     * @required
     *
     * @generated from field: string required_role = 3;
     */
    requiredRole: string;
};
/**
 * Describes the message api.vapor.v1.CheckPermissionRequest.
 * Use `create(CheckPermissionRequestSchema)` to create a new message.
 */
export declare const CheckPermissionRequestSchema: GenMessage<CheckPermissionRequest>;
/**
 * CheckPermissionResponse confirms the user has sufficient permissions.
 * Returns error if user lacks required role.
 *
 * @generated from message api.vapor.v1.CheckPermissionResponse
 */
export type CheckPermissionResponse = Message<"api.vapor.v1.CheckPermissionResponse"> & {};
/**
 * Describes the message api.vapor.v1.CheckPermissionResponse.
 * Use `create(CheckPermissionResponseSchema)` to create a new message.
 */
export declare const CheckPermissionResponseSchema: GenMessage<CheckPermissionResponse>;
/**
 * DeleteUserRequest permanently deletes a user and ALL associated data.
 * WARNING: This is IRREVERSIBLE and will cascade delete:
 * - User record and all sessions
 * - All user authorizations and connections
 * - All channels owned by the user
 * - All related data and events
 * Use only for GDPR compliance or severe ToS violations.
 *
 * @generated from message api.vapor.v1.DeleteUserRequest
 */
export type DeleteUserRequest = Message<"api.vapor.v1.DeleteUserRequest"> & {
    /**
     * User ID to permanently delete.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Reason for deletion (required for audit trail).
     * Examples: "GDPR request", "ToS violation", "Account compromise"
     * @required
     *
     * @generated from field: string reason = 2;
     */
    reason: string;
    /**
     * ID of the user/admin performing the deletion.
     * Required for audit trail.
     * @required
     *
     * @generated from field: string deleted_by = 3;
     */
    deletedBy: string;
};
/**
 * Describes the message api.vapor.v1.DeleteUserRequest.
 * Use `create(DeleteUserRequestSchema)` to create a new message.
 */
export declare const DeleteUserRequestSchema: GenMessage<DeleteUserRequest>;
/**
 * DeleteUserResponse confirms the user was permanently deleted.
 *
 * @generated from message api.vapor.v1.DeleteUserResponse
 */
export type DeleteUserResponse = Message<"api.vapor.v1.DeleteUserResponse"> & {};
/**
 * Describes the message api.vapor.v1.DeleteUserResponse.
 * Use `create(DeleteUserResponseSchema)` to create a new message.
 */
export declare const DeleteUserResponseSchema: GenMessage<DeleteUserResponse>;
/**
 * DeleteChannelRequest permanently deletes a channel and ALL associated data.
 * WARNING: This is IRREVERSIBLE and will cascade delete:
 * - Channel record and all API keys
 * - All user authorizations for the channel
 * - All pending invitations
 * - Channel connection data
 * - Clear primary channel references
 * Use only when a channel is permanently discontinued.
 *
 * @generated from message api.vapor.v1.DeleteChannelRequest
 */
export type DeleteChannelRequest = Message<"api.vapor.v1.DeleteChannelRequest"> & {
    /**
     * ID of the user making the delete request.
     * This is the authenticated user initiating the action.
     * @required
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * Channel ID to permanently delete.
     * @required
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Reason for deletion (required for audit trail).
     * Examples: "Channel banned", "Owner request", "Platform termination"
     * @required
     *
     * @generated from field: string reason = 3;
     */
    reason: string;
    /**
     * ID of the user/admin actually performing the deletion.
     * This could be different from user_id if an admin is acting on behalf of a user.
     * Required for audit trail.
     * @required
     *
     * @generated from field: string deleted_by = 4;
     */
    deletedBy: string;
};
/**
 * Describes the message api.vapor.v1.DeleteChannelRequest.
 * Use `create(DeleteChannelRequestSchema)` to create a new message.
 */
export declare const DeleteChannelRequestSchema: GenMessage<DeleteChannelRequest>;
/**
 * DeleteChannelResponse confirms the channel was permanently deleted.
 *
 * @generated from message api.vapor.v1.DeleteChannelResponse
 */
export type DeleteChannelResponse = Message<"api.vapor.v1.DeleteChannelResponse"> & {};
/**
 * Describes the message api.vapor.v1.DeleteChannelResponse.
 * Use `create(DeleteChannelResponseSchema)` to create a new message.
 */
export declare const DeleteChannelResponseSchema: GenMessage<DeleteChannelResponse>;
/**
 * SetFeatureRequest enables or disables a feature for an entity.
 * Creates a new feature record or updates existing one.
 *
 * @generated from message api.vapor.v1.SetFeatureRequest
 */
export type SetFeatureRequest = Message<"api.vapor.v1.SetFeatureRequest"> & {
    /**
     * ID of the user or channel to set feature for.
     * Must be a valid MongoDB ObjectID.
     * @required
     *
     * @generated from field: string entity_id = 1;
     */
    entityId: string;
    /**
     * Type of entity.
     * Valid values: "user", "channel"
     * @required
     *
     * @generated from field: string entity_type = 2;
     */
    entityType: string;
    /**
     * Feature name using kebab-case convention.
     * Examples: "dark-mode", "api-v2", "premium-analytics"
     * @required
     *
     * @generated from field: string feature_name = 3;
     */
    featureName: string;
    /**
     * Whether to enable or disable the feature.
     * @required
     *
     * @generated from field: bool enabled = 4;
     */
    enabled: boolean;
};
/**
 * Describes the message api.vapor.v1.SetFeatureRequest.
 * Use `create(SetFeatureRequestSchema)` to create a new message.
 */
export declare const SetFeatureRequestSchema: GenMessage<SetFeatureRequest>;
/**
 * SetFeatureResponse confirms the feature was successfully set.
 *
 * @generated from message api.vapor.v1.SetFeatureResponse
 */
export type SetFeatureResponse = Message<"api.vapor.v1.SetFeatureResponse"> & {};
/**
 * Describes the message api.vapor.v1.SetFeatureResponse.
 * Use `create(SetFeatureResponseSchema)` to create a new message.
 */
export declare const SetFeatureResponseSchema: GenMessage<SetFeatureResponse>;
/**
 * RemoveFeatureRequest deletes a feature configuration for an entity.
 * After removal, the feature reverts to global default (if set).
 *
 * @generated from message api.vapor.v1.RemoveFeatureRequest
 */
export type RemoveFeatureRequest = Message<"api.vapor.v1.RemoveFeatureRequest"> & {
    /**
     * ID of the user or channel.
     * @required
     *
     * @generated from field: string entity_id = 1;
     */
    entityId: string;
    /**
     * Type of entity.
     * Valid values: "user", "channel"
     * @required
     *
     * @generated from field: string entity_type = 2;
     */
    entityType: string;
    /**
     * Feature name to remove.
     * @required
     *
     * @generated from field: string feature_name = 3;
     */
    featureName: string;
};
/**
 * Describes the message api.vapor.v1.RemoveFeatureRequest.
 * Use `create(RemoveFeatureRequestSchema)` to create a new message.
 */
export declare const RemoveFeatureRequestSchema: GenMessage<RemoveFeatureRequest>;
/**
 * RemoveFeatureResponse confirms the feature was removed.
 *
 * @generated from message api.vapor.v1.RemoveFeatureResponse
 */
export type RemoveFeatureResponse = Message<"api.vapor.v1.RemoveFeatureResponse"> & {};
/**
 * Describes the message api.vapor.v1.RemoveFeatureResponse.
 * Use `create(RemoveFeatureResponseSchema)` to create a new message.
 */
export declare const RemoveFeatureResponseSchema: GenMessage<RemoveFeatureResponse>;
/**
 * GetFeaturesRequest retrieves all feature configurations for an entity.
 * Returns both explicitly set features and computed states.
 *
 * @generated from message api.vapor.v1.GetFeaturesRequest
 */
export type GetFeaturesRequest = Message<"api.vapor.v1.GetFeaturesRequest"> & {
    /**
     * ID of the user or channel.
     * @required
     *
     * @generated from field: string entity_id = 1;
     */
    entityId: string;
    /**
     * Type of entity.
     * Valid values: "user", "channel"
     * @required
     *
     * @generated from field: string entity_type = 2;
     */
    entityType: string;
};
/**
 * Describes the message api.vapor.v1.GetFeaturesRequest.
 * Use `create(GetFeaturesRequestSchema)` to create a new message.
 */
export declare const GetFeaturesRequestSchema: GenMessage<GetFeaturesRequest>;
/**
 * GetFeaturesResponse contains all features for the requested entity.
 *
 * @generated from message api.vapor.v1.GetFeaturesResponse
 */
export type GetFeaturesResponse = Message<"api.vapor.v1.GetFeaturesResponse"> & {
    /**
     * List of explicitly configured features for this entity.
     * Does not include features using global defaults.
     *
     * @generated from field: repeated api.vapor.v1.Feature features = 1;
     */
    features: Feature[];
    /**
     * Convenient map of feature_name to enabled status.
     * Includes both explicit and default values.
     *
     * @generated from field: map<string, bool> feature_map = 2;
     */
    featureMap: {
        [key: string]: boolean;
    };
};
/**
 * Describes the message api.vapor.v1.GetFeaturesResponse.
 * Use `create(GetFeaturesResponseSchema)` to create a new message.
 */
export declare const GetFeaturesResponseSchema: GenMessage<GetFeaturesResponse>;
/**
 * HasFeatureRequest checks if a specific feature is enabled for an entity.
 * Considers both explicit settings and global defaults.
 *
 * @generated from message api.vapor.v1.HasFeatureRequest
 */
export type HasFeatureRequest = Message<"api.vapor.v1.HasFeatureRequest"> & {
    /**
     * ID of the user or channel.
     * @required
     *
     * @generated from field: string entity_id = 1;
     */
    entityId: string;
    /**
     * Type of entity.
     * Valid values: "user", "channel"
     * @required
     *
     * @generated from field: string entity_type = 2;
     */
    entityType: string;
    /**
     * Feature name to check.
     * @required
     *
     * @generated from field: string feature_name = 3;
     */
    featureName: string;
};
/**
 * Describes the message api.vapor.v1.HasFeatureRequest.
 * Use `create(HasFeatureRequestSchema)` to create a new message.
 */
export declare const HasFeatureRequestSchema: GenMessage<HasFeatureRequest>;
/**
 * HasFeatureResponse indicates the feature state for the entity.
 *
 * @generated from message api.vapor.v1.HasFeatureResponse
 */
export type HasFeatureResponse = Message<"api.vapor.v1.HasFeatureResponse"> & {
    /**
     * Whether the feature is enabled for this entity.
     * Considers explicit settings and global defaults.
     *
     * @generated from field: bool enabled = 1;
     */
    enabled: boolean;
    /**
     * Whether there's an explicit configuration for this feature.
     * False means the global default is being used.
     *
     * @generated from field: bool exists = 2;
     */
    exists: boolean;
};
/**
 * Describes the message api.vapor.v1.HasFeatureResponse.
 * Use `create(HasFeatureResponseSchema)` to create a new message.
 */
export declare const HasFeatureResponseSchema: GenMessage<HasFeatureResponse>;
/**
 * SetMultipleFeaturesRequest batch updates features for an entity.
 * More efficient than multiple individual SetFeature calls.
 *
 * @generated from message api.vapor.v1.SetMultipleFeaturesRequest
 */
export type SetMultipleFeaturesRequest = Message<"api.vapor.v1.SetMultipleFeaturesRequest"> & {
    /**
     * ID of the user or channel.
     * @required
     *
     * @generated from field: string entity_id = 1;
     */
    entityId: string;
    /**
     * Type of entity.
     * Valid values: "user", "channel"
     * @required
     *
     * @generated from field: string entity_type = 2;
     */
    entityType: string;
    /**
     * Map of feature names to their enabled status.
     * All features are set/updated in a single operation.
     * @required
     *
     * @generated from field: map<string, bool> features = 3;
     */
    features: {
        [key: string]: boolean;
    };
};
/**
 * Describes the message api.vapor.v1.SetMultipleFeaturesRequest.
 * Use `create(SetMultipleFeaturesRequestSchema)` to create a new message.
 */
export declare const SetMultipleFeaturesRequestSchema: GenMessage<SetMultipleFeaturesRequest>;
/**
 * SetMultipleFeaturesResponse confirms the features were set.
 *
 * @generated from message api.vapor.v1.SetMultipleFeaturesResponse
 */
export type SetMultipleFeaturesResponse = Message<"api.vapor.v1.SetMultipleFeaturesResponse"> & {};
/**
 * Describes the message api.vapor.v1.SetMultipleFeaturesResponse.
 * Use `create(SetMultipleFeaturesResponseSchema)` to create a new message.
 */
export declare const SetMultipleFeaturesResponseSchema: GenMessage<SetMultipleFeaturesResponse>;
/**
 * SetGlobalDefaultRequest sets a system-wide default for a feature.
 * Affects all entities without explicit feature configuration.
 * Admin operation only.
 *
 * @generated from message api.vapor.v1.SetGlobalDefaultRequest
 */
export type SetGlobalDefaultRequest = Message<"api.vapor.v1.SetGlobalDefaultRequest"> & {
    /**
     * Feature name to set default for.
     * @required
     *
     * @generated from field: string feature_name = 1;
     */
    featureName: string;
    /**
     * Default enabled state for this feature.
     * @required
     *
     * @generated from field: bool enabled = 2;
     */
    enabled: boolean;
};
/**
 * Describes the message api.vapor.v1.SetGlobalDefaultRequest.
 * Use `create(SetGlobalDefaultRequestSchema)` to create a new message.
 */
export declare const SetGlobalDefaultRequestSchema: GenMessage<SetGlobalDefaultRequest>;
/**
 * SetGlobalDefaultResponse confirms the global default was set.
 *
 * @generated from message api.vapor.v1.SetGlobalDefaultResponse
 */
export type SetGlobalDefaultResponse = Message<"api.vapor.v1.SetGlobalDefaultResponse"> & {};
/**
 * Describes the message api.vapor.v1.SetGlobalDefaultResponse.
 * Use `create(SetGlobalDefaultResponseSchema)` to create a new message.
 */
export declare const SetGlobalDefaultResponseSchema: GenMessage<SetGlobalDefaultResponse>;
/**
 * GetGlobalDefaultsRequest retrieves all system-wide feature defaults.
 * Admin operation for viewing feature rollout configuration.
 *
 * @generated from message api.vapor.v1.GetGlobalDefaultsRequest
 */
export type GetGlobalDefaultsRequest = Message<"api.vapor.v1.GetGlobalDefaultsRequest"> & {};
/**
 * Describes the message api.vapor.v1.GetGlobalDefaultsRequest.
 * Use `create(GetGlobalDefaultsRequestSchema)` to create a new message.
 */
export declare const GetGlobalDefaultsRequestSchema: GenMessage<GetGlobalDefaultsRequest>;
/**
 * GetGlobalDefaultsResponse contains all global feature defaults.
 *
 * @generated from message api.vapor.v1.GetGlobalDefaultsResponse
 */
export type GetGlobalDefaultsResponse = Message<"api.vapor.v1.GetGlobalDefaultsResponse"> & {
    /**
     * Map of feature names to their default enabled status.
     * Empty map means no global defaults are configured.
     *
     * @generated from field: map<string, bool> defaults = 1;
     */
    defaults: {
        [key: string]: boolean;
    };
};
/**
 * Describes the message api.vapor.v1.GetGlobalDefaultsResponse.
 * Use `create(GetGlobalDefaultsResponseSchema)` to create a new message.
 */
export declare const GetGlobalDefaultsResponseSchema: GenMessage<GetGlobalDefaultsResponse>;
/**
 * SearchChannelsRequest performs full-text search across channels.
 * Uses MongoDB Atlas Search for relevance-based results.
 *
 * @generated from message api.vapor.v1.SearchChannelsRequest
 */
export type SearchChannelsRequest = Message<"api.vapor.v1.SearchChannelsRequest"> & {
    /**
     * Free-text search query.
     * Searches across: username, display_name, alias fields.
     * Supports partial matching and fuzzy search.
     * @required
     *
     * @generated from field: string query = 1;
     */
    query: string;
    /**
     * Filter by streaming platforms.
     * Valid values: "twitch", "youtube", "facebook", "trovo", "kick", "tiktok", "instagram"
     * Empty array = search all providers.
     *
     * @generated from field: repeated string providers = 2;
     */
    providers: string[];
    /**
     * Filter by broadcaster types.
     * Examples: "partner", "affiliate", "verified"
     * Platform-specific values.
     *
     * @generated from field: repeated string types = 3;
     */
    types: string[];
    /**
     * Filter by country code (ISO 3166-1 alpha-2).
     * Examples: "US", "GB", "DE"
     *
     * @generated from field: string country = 4;
     */
    country: string;
    /**
     * Filter by language code (ISO 639-1).
     * Examples: "en", "es", "ja"
     *
     * @generated from field: string language = 5;
     */
    language: string;
    /**
     * Maximum results to return (default: 20, max: 100).
     *
     * @generated from field: int32 limit = 6;
     */
    limit: number;
    /**
     * Number of results to skip for pagination.
     *
     * @generated from field: int32 offset = 7;
     */
    offset: number;
};
/**
 * Describes the message api.vapor.v1.SearchChannelsRequest.
 * Use `create(SearchChannelsRequestSchema)` to create a new message.
 */
export declare const SearchChannelsRequestSchema: GenMessage<SearchChannelsRequest>;
/**
 * SearchChannelsResponse contains matched channels with relevance scores.
 *
 * @generated from message api.vapor.v1.SearchChannelsResponse
 */
export type SearchChannelsResponse = Message<"api.vapor.v1.SearchChannelsResponse"> & {
    /**
     * Matched channels ordered by relevance (highest score first).
     *
     * @generated from field: repeated api.vapor.v1.SearchChannelsResponse.Result results = 1;
     */
    results: SearchChannelsResponse_Result[];
    /**
     * Total number of matches (ignoring limit/offset).
     * Use for pagination calculations.
     *
     * @generated from field: int64 total_count = 2;
     */
    totalCount: bigint;
    /**
     * Whether more results exist after this page.
     *
     * @generated from field: bool has_next_page = 3;
     */
    hasNextPage: boolean;
    /**
     * Cursor for efficient pagination (future enhancement).
     * Currently unused - use offset-based pagination.
     *
     * @generated from field: string next_cursor = 4;
     */
    nextCursor: string;
};
/**
 * Describes the message api.vapor.v1.SearchChannelsResponse.
 * Use `create(SearchChannelsResponseSchema)` to create a new message.
 */
export declare const SearchChannelsResponseSchema: GenMessage<SearchChannelsResponse>;
/**
 * Result pairs a channel with its search relevance score.
 *
 * @generated from message api.vapor.v1.SearchChannelsResponse.Result
 */
export type SearchChannelsResponse_Result = Message<"api.vapor.v1.SearchChannelsResponse.Result"> & {
    /**
     * Matched channel document.
     *
     * @generated from field: api.vapor.v1.Channel channel = 1;
     */
    channel?: Channel;
    /**
     * Atlas Search relevance score.
     * Higher scores indicate better matches.
     *
     * @generated from field: double score = 2;
     */
    score: number;
};
/**
 * Describes the message api.vapor.v1.SearchChannelsResponse.Result.
 * Use `create(SearchChannelsResponse_ResultSchema)` to create a new message.
 */
export declare const SearchChannelsResponse_ResultSchema: GenMessage<SearchChannelsResponse_Result>;
/**
 * RemoveGlobalDefaultRequest removes a system-wide feature default.
 * After removal, the feature has no default (effectively disabled).
 * Admin operation only.
 *
 * @generated from message api.vapor.v1.RemoveGlobalDefaultRequest
 */
export type RemoveGlobalDefaultRequest = Message<"api.vapor.v1.RemoveGlobalDefaultRequest"> & {
    /**
     * Feature name to remove default for.
     * @required
     *
     * @generated from field: string feature_name = 1;
     */
    featureName: string;
};
/**
 * Describes the message api.vapor.v1.RemoveGlobalDefaultRequest.
 * Use `create(RemoveGlobalDefaultRequestSchema)` to create a new message.
 */
export declare const RemoveGlobalDefaultRequestSchema: GenMessage<RemoveGlobalDefaultRequest>;
/**
 * RemoveGlobalDefaultResponse confirms the global default was removed.
 *
 * @generated from message api.vapor.v1.RemoveGlobalDefaultResponse
 */
export type RemoveGlobalDefaultResponse = Message<"api.vapor.v1.RemoveGlobalDefaultResponse"> & {};
/**
 * Describes the message api.vapor.v1.RemoveGlobalDefaultResponse.
 * Use `create(RemoveGlobalDefaultResponseSchema)` to create a new message.
 */
export declare const RemoveGlobalDefaultResponseSchema: GenMessage<RemoveGlobalDefaultResponse>;
/**
 * Connection represents an OAuth connection with token information.
 * This is a simplified view focused on token management.
 *
 * @generated from message api.vapor.v1.Connection
 */
export type Connection = Message<"api.vapor.v1.Connection"> & {
    /**
     * Unique identifier for the connection (MongoDB ObjectID).
     *
     * @generated from field: string id = 1;
     */
    id: string;
    /**
     * OAuth provider name (e.g., "youtube", "twitch").
     *
     * @generated from field: string provider = 2;
     */
    provider: string;
    /**
     * Provider's unique identifier for the account.
     *
     * @generated from field: string provider_id = 3;
     */
    providerId: string;
    /**
     * Associated channel ID if this is a channel connection.
     *
     * @generated from field: string channel_id = 4;
     */
    channelId: string;
    /**
     * User ID who owns this connection.
     *
     * @generated from field: string user_id = 5;
     */
    userId: string;
    /**
     * When the current access token expires.
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 6;
     */
    expiresAt?: Timestamp;
    /**
     * Whether the connection is currently authorized.
     *
     * @generated from field: bool authorized = 7;
     */
    authorized: boolean;
    /**
     * Username on the provider's platform.
     *
     * @generated from field: string username = 8;
     */
    username: string;
};
/**
 * Describes the message api.vapor.v1.Connection.
 * Use `create(ConnectionSchema)` to create a new message.
 */
export declare const ConnectionSchema: GenMessage<Connection>;
/**
 * ListExpiringConnectionsRequest filters connections by expiration status.
 * Supports provider filtering and cursor-based pagination.
 *
 * @generated from message api.vapor.v1.ListExpiringConnectionsRequest
 */
export type ListExpiringConnectionsRequest = Message<"api.vapor.v1.ListExpiringConnectionsRequest"> & {
    /**
     * Filter by specific providers (empty = all providers).
     * Examples: ["youtube"], ["twitch", "youtube"]
     *
     * @generated from field: repeated string providers = 1;
     */
    providers: string[];
    /**
     * Find connections expiring within this many seconds from now.
     * Example: 3600 = connections expiring in the next hour
     * Use 0 to only get currently expired connections.
     *
     * @generated from field: int64 expires_within_seconds = 2;
     */
    expiresWithinSeconds: bigint;
    /**
     * Include connections that have already expired.
     * If false, only returns connections expiring in the future.
     *
     * @generated from field: bool include_expired = 3;
     */
    includeExpired: boolean;
    /**
     * Maximum number of connections to return per page.
     * Default: 100, Maximum: 1000
     *
     * @generated from field: int32 limit = 4;
     */
    limit: number;
    /**
     * Cursor from previous response for pagination.
     * Empty string for first page.
     *
     * @generated from field: string cursor = 5;
     */
    cursor: string;
};
/**
 * Describes the message api.vapor.v1.ListExpiringConnectionsRequest.
 * Use `create(ListExpiringConnectionsRequestSchema)` to create a new message.
 */
export declare const ListExpiringConnectionsRequestSchema: GenMessage<ListExpiringConnectionsRequest>;
/**
 * ListExpiringConnectionsResponse contains connections and pagination info.
 *
 * @generated from message api.vapor.v1.ListExpiringConnectionsResponse
 */
export type ListExpiringConnectionsResponse = Message<"api.vapor.v1.ListExpiringConnectionsResponse"> & {
    /**
     * Connections matching the filter criteria.
     * Sorted by expiration time (earliest first).
     *
     * @generated from field: repeated api.vapor.v1.Connection connections = 1;
     */
    connections: Connection[];
    /**
     * Cursor for fetching the next page.
     * Empty if no more results.
     *
     * @generated from field: string next_cursor = 2;
     */
    nextCursor: string;
    /**
     * Whether more results exist after this page.
     *
     * @generated from field: bool has_more = 3;
     */
    hasMore: boolean;
    /**
     * Total count of matching connections (optional).
     * May be omitted for performance reasons on large datasets.
     *
     * @generated from field: int64 total_count = 4;
     */
    totalCount: bigint;
};
/**
 * Describes the message api.vapor.v1.ListExpiringConnectionsResponse.
 * Use `create(ListExpiringConnectionsResponseSchema)` to create a new message.
 */
export declare const ListExpiringConnectionsResponseSchema: GenMessage<ListExpiringConnectionsResponse>;
/**
 * BulkUpdateAccessTokensRequest updates tokens for multiple connections.
 * Supports up to 1000 updates in a single request.
 *
 * @generated from message api.vapor.v1.BulkUpdateAccessTokensRequest
 */
export type BulkUpdateAccessTokensRequest = Message<"api.vapor.v1.BulkUpdateAccessTokensRequest"> & {
    /**
     * List of token updates to perform.
     * Maximum: 1000 updates per request.
     * @required
     *
     * @generated from field: repeated api.vapor.v1.BulkUpdateAccessTokensRequest.TokenUpdate updates = 1;
     */
    updates: BulkUpdateAccessTokensRequest_TokenUpdate[];
};
/**
 * Describes the message api.vapor.v1.BulkUpdateAccessTokensRequest.
 * Use `create(BulkUpdateAccessTokensRequestSchema)` to create a new message.
 */
export declare const BulkUpdateAccessTokensRequestSchema: GenMessage<BulkUpdateAccessTokensRequest>;
/**
 * TokenUpdate represents a single token update operation.
 *
 * @generated from message api.vapor.v1.BulkUpdateAccessTokensRequest.TokenUpdate
 */
export type BulkUpdateAccessTokensRequest_TokenUpdate = Message<"api.vapor.v1.BulkUpdateAccessTokensRequest.TokenUpdate"> & {
    /**
     * Connection ID to update (MongoDB ObjectID).
     * @required
     *
     * @generated from field: string connection_id = 1;
     */
    connectionId: string;
    /**
     * New OAuth access token.
     * @required
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string access_token = 2;
     */
    accessToken: string;
    /**
     * New OAuth refresh token (if changed).
     * @sensitive: Contains authentication credentials.
     *
     * @generated from field: string refresh_token = 3;
     */
    refreshToken: string;
    /**
     * When the new access token expires.
     * @required
     *
     * @generated from field: google.protobuf.Timestamp expires_at = 4;
     */
    expiresAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.BulkUpdateAccessTokensRequest.TokenUpdate.
 * Use `create(BulkUpdateAccessTokensRequest_TokenUpdateSchema)` to create a new message.
 */
export declare const BulkUpdateAccessTokensRequest_TokenUpdateSchema: GenMessage<BulkUpdateAccessTokensRequest_TokenUpdate>;
/**
 * BulkUpdateAccessTokensResponse reports the results of bulk updates.
 *
 * @generated from message api.vapor.v1.BulkUpdateAccessTokensResponse
 */
export type BulkUpdateAccessTokensResponse = Message<"api.vapor.v1.BulkUpdateAccessTokensResponse"> & {
    /**
     * Results for each update attempt.
     * Order matches the request's updates array.
     *
     * @generated from field: repeated api.vapor.v1.BulkUpdateAccessTokensResponse.UpdateResult results = 1;
     */
    results: BulkUpdateAccessTokensResponse_UpdateResult[];
    /**
     * Number of successful updates.
     *
     * @generated from field: int32 successful_count = 2;
     */
    successfulCount: number;
    /**
     * Number of failed updates.
     *
     * @generated from field: int32 failed_count = 3;
     */
    failedCount: number;
    /**
     * Total processing time in milliseconds.
     *
     * @generated from field: int64 processing_time_ms = 4;
     */
    processingTimeMs: bigint;
};
/**
 * Describes the message api.vapor.v1.BulkUpdateAccessTokensResponse.
 * Use `create(BulkUpdateAccessTokensResponseSchema)` to create a new message.
 */
export declare const BulkUpdateAccessTokensResponseSchema: GenMessage<BulkUpdateAccessTokensResponse>;
/**
 * UpdateResult reports the outcome of a single update.
 *
 * @generated from message api.vapor.v1.BulkUpdateAccessTokensResponse.UpdateResult
 */
export type BulkUpdateAccessTokensResponse_UpdateResult = Message<"api.vapor.v1.BulkUpdateAccessTokensResponse.UpdateResult"> & {
    /**
     * Connection ID that was updated.
     *
     * @generated from field: string connection_id = 1;
     */
    connectionId: string;
    /**
     * Whether the update succeeded.
     *
     * @generated from field: bool success = 2;
     */
    success: boolean;
    /**
     * Error message if the update failed.
     * Empty if successful.
     *
     * @generated from field: string error = 3;
     */
    error: string;
};
/**
 * Describes the message api.vapor.v1.BulkUpdateAccessTokensResponse.UpdateResult.
 * Use `create(BulkUpdateAccessTokensResponse_UpdateResultSchema)` to create a new message.
 */
export declare const BulkUpdateAccessTokensResponse_UpdateResultSchema: GenMessage<BulkUpdateAccessTokensResponse_UpdateResult>;
/**
 * CreateAPIKeyRequest generates a new API key for a channel.
 * Only channel owners and administrators can create keys.
 *
 * @generated from message api.vapor.v1.CreateAPIKeyRequest
 */
export type CreateAPIKeyRequest = Message<"api.vapor.v1.CreateAPIKeyRequest"> & {
    /**
     * Channel ID to create the API key for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
    /**
     * Human-readable name for the API key.
     * Examples: "Production API", "Development", "CI/CD Pipeline"
     * @required
     *
     * @generated from field: string name = 2;
     */
    name: string;
    /**
     * Role to assign to this API key.
     * Determines the permission level.
     * Valid values: "overlay", "editor", "administrator"
     * Default: "overlay" if not specified
     *
     * @generated from field: string role = 3;
     */
    role: string;
    /**
     * Additional permission scopes for fine-grained access.
     * Optional - if not provided, uses default scopes for the role.
     *
     * @generated from field: repeated string scopes = 4;
     */
    scopes: string[];
};
/**
 * Describes the message api.vapor.v1.CreateAPIKeyRequest.
 * Use `create(CreateAPIKeyRequestSchema)` to create a new message.
 */
export declare const CreateAPIKeyRequestSchema: GenMessage<CreateAPIKeyRequest>;
/**
 * CreateAPIKeyResponse returns the newly created API key.
 *
 * @generated from message api.vapor.v1.CreateAPIKeyResponse
 */
export type CreateAPIKeyResponse = Message<"api.vapor.v1.CreateAPIKeyResponse"> & {
    /**
     * The complete API key information including the key value.
     * The key field contains the actual API key.
     *
     * @generated from field: api.vapor.v1.APIKey api_key = 1;
     */
    apiKey?: APIKey;
};
/**
 * Describes the message api.vapor.v1.CreateAPIKeyResponse.
 * Use `create(CreateAPIKeyResponseSchema)` to create a new message.
 */
export declare const CreateAPIKeyResponseSchema: GenMessage<CreateAPIKeyResponse>;
/**
 * ListAPIKeysRequest retrieves all API keys for a channel.
 * Only channel owners and administrators can list keys.
 *
 * @generated from message api.vapor.v1.ListAPIKeysRequest
 */
export type ListAPIKeysRequest = Message<"api.vapor.v1.ListAPIKeysRequest"> & {
    /**
     * Channel ID to list API keys for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.ListAPIKeysRequest.
 * Use `create(ListAPIKeysRequestSchema)` to create a new message.
 */
export declare const ListAPIKeysRequestSchema: GenMessage<ListAPIKeysRequest>;
/**
 * ListAPIKeysResponse contains all API keys for the channel.
 *
 * @generated from message api.vapor.v1.ListAPIKeysResponse
 */
export type ListAPIKeysResponse = Message<"api.vapor.v1.ListAPIKeysResponse"> & {
    /**
     * List of API keys (without the actual key values).
     * Ordered by creation date (newest first).
     *
     * @generated from field: repeated api.vapor.v1.APIKey api_keys = 1;
     */
    apiKeys: APIKey[];
};
/**
 * Describes the message api.vapor.v1.ListAPIKeysResponse.
 * Use `create(ListAPIKeysResponseSchema)` to create a new message.
 */
export declare const ListAPIKeysResponseSchema: GenMessage<ListAPIKeysResponse>;
/**
 * GetAPIKeyRequest retrieves details about a specific API key.
 *
 * @generated from message api.vapor.v1.GetAPIKeyRequest
 */
export type GetAPIKeyRequest = Message<"api.vapor.v1.GetAPIKeyRequest"> & {
    /**
     * API key ID to retrieve details for.
     * @required
     *
     * @generated from field: string api_key_id = 1;
     */
    apiKeyId: string;
};
/**
 * Describes the message api.vapor.v1.GetAPIKeyRequest.
 * Use `create(GetAPIKeyRequestSchema)` to create a new message.
 */
export declare const GetAPIKeyRequestSchema: GenMessage<GetAPIKeyRequest>;
/**
 * GetAPIKeyResponse contains the API key details.
 *
 * @generated from message api.vapor.v1.GetAPIKeyResponse
 */
export type GetAPIKeyResponse = Message<"api.vapor.v1.GetAPIKeyResponse"> & {
    /**
     * API key information (without the actual key value).
     *
     * @generated from field: api.vapor.v1.APIKey api_key = 1;
     */
    apiKey?: APIKey;
};
/**
 * Describes the message api.vapor.v1.GetAPIKeyResponse.
 * Use `create(GetAPIKeyResponseSchema)` to create a new message.
 */
export declare const GetAPIKeyResponseSchema: GenMessage<GetAPIKeyResponse>;
/**
 * RotateAPIKeyRequest creates a new key to replace an existing one.
 * Useful for regular rotation or suspected compromise.
 *
 * @generated from message api.vapor.v1.RotateAPIKeyRequest
 */
export type RotateAPIKeyRequest = Message<"api.vapor.v1.RotateAPIKeyRequest"> & {
    /**
     * ID of the API key to rotate.
     * @required
     *
     * @generated from field: string api_key_id = 1;
     */
    apiKeyId: string;
    /**
     * Whether to immediately revoke the old key.
     * If false, the old key remains valid (both keys work).
     * If true, the old key is immediately invalidated.
     * Default: false
     *
     * @generated from field: bool revoke_immediately = 2;
     */
    revokeImmediately: boolean;
    /**
     * Optional new name for the rotated key.
     * If not provided, uses the same name as the old key.
     *
     * @generated from field: string new_name = 3;
     */
    newName: string;
    /**
     * Reason for rotation (for audit trail).
     * Examples: "Regular rotation", "Possible compromise", "Policy requirement"
     *
     * @generated from field: string reason = 4;
     */
    reason: string;
};
/**
 * Describes the message api.vapor.v1.RotateAPIKeyRequest.
 * Use `create(RotateAPIKeyRequestSchema)` to create a new message.
 */
export declare const RotateAPIKeyRequestSchema: GenMessage<RotateAPIKeyRequest>;
/**
 * RotateAPIKeyResponse returns the new API key after rotation.
 *
 * @generated from message api.vapor.v1.RotateAPIKeyResponse
 */
export type RotateAPIKeyResponse = Message<"api.vapor.v1.RotateAPIKeyResponse"> & {
    /**
     * The new API key information including the key value.
     *
     * @generated from field: api.vapor.v1.APIKey new_api_key = 1;
     */
    newApiKey?: APIKey;
    /**
     * The old API key that was rotated.
     * Will show as revoked if revoke_immediately was true.
     *
     * @generated from field: api.vapor.v1.APIKey old_api_key = 2;
     */
    oldApiKey?: APIKey;
};
/**
 * Describes the message api.vapor.v1.RotateAPIKeyResponse.
 * Use `create(RotateAPIKeyResponseSchema)` to create a new message.
 */
export declare const RotateAPIKeyResponseSchema: GenMessage<RotateAPIKeyResponse>;
/**
 * RevokeAPIKeyRequest immediately invalidates an API key.
 *
 * @generated from message api.vapor.v1.RevokeAPIKeyRequest
 */
export type RevokeAPIKeyRequest = Message<"api.vapor.v1.RevokeAPIKeyRequest"> & {
    /**
     * ID of the API key to revoke.
     * @required
     *
     * @generated from field: string api_key_id = 1;
     */
    apiKeyId: string;
    /**
     * Reason for revocation (for audit trail).
     * Examples: "No longer needed", "Compromised", "Employee offboarding"
     *
     * @generated from field: string reason = 2;
     */
    reason: string;
};
/**
 * Describes the message api.vapor.v1.RevokeAPIKeyRequest.
 * Use `create(RevokeAPIKeyRequestSchema)` to create a new message.
 */
export declare const RevokeAPIKeyRequestSchema: GenMessage<RevokeAPIKeyRequest>;
/**
 * RevokeAPIKeyResponse confirms the key was revoked.
 *
 * @generated from message api.vapor.v1.RevokeAPIKeyResponse
 */
export type RevokeAPIKeyResponse = Message<"api.vapor.v1.RevokeAPIKeyResponse"> & {
    /**
     * Whether the revocation was successful.
     *
     * @generated from field: bool success = 1;
     */
    success: boolean;
    /**
     * Timestamp when the key was revoked.
     *
     * @generated from field: google.protobuf.Timestamp revoked_at = 2;
     */
    revokedAt?: Timestamp;
};
/**
 * Describes the message api.vapor.v1.RevokeAPIKeyResponse.
 * Use `create(RevokeAPIKeyResponseSchema)` to create a new message.
 */
export declare const RevokeAPIKeyResponseSchema: GenMessage<RevokeAPIKeyResponse>;
/**
 * ValidateAPIKeyRequest checks if an API key is valid.
 * Used internally for authentication.
 *
 * @generated from message api.vapor.v1.ValidateAPIKeyRequest
 */
export type ValidateAPIKeyRequest = Message<"api.vapor.v1.ValidateAPIKeyRequest"> & {
    /**
     * The API key to validate.
     * Format: "vpr_" followed by base64url characters
     * @required
     * @sensitive: Contains authentication credentials
     *
     * @generated from field: string api_key = 1;
     */
    apiKey: string;
};
/**
 * Describes the message api.vapor.v1.ValidateAPIKeyRequest.
 * Use `create(ValidateAPIKeyRequestSchema)` to create a new message.
 */
export declare const ValidateAPIKeyRequestSchema: GenMessage<ValidateAPIKeyRequest>;
/**
 * ValidateAPIKeyResponse returns validation results and metadata.
 *
 * @generated from message api.vapor.v1.ValidateAPIKeyResponse
 */
export type ValidateAPIKeyResponse = Message<"api.vapor.v1.ValidateAPIKeyResponse"> & {
    /**
     * Whether the API key is valid.
     *
     * @generated from field: bool valid = 1;
     */
    valid: boolean;
    /**
     * Channel ID the key provides access to (if valid).
     *
     * @generated from field: string channel_id = 2;
     */
    channelId: string;
    /**
     * Role assigned to this API key (if valid).
     *
     * @generated from field: string role = 3;
     */
    role: string;
    /**
     * Permission scopes for this key (if valid).
     *
     * @generated from field: repeated string scopes = 4;
     */
    scopes: string[];
    /**
     * API key ID (if valid).
     *
     * @generated from field: string api_key_id = 5;
     */
    apiKeyId: string;
    /**
     * Name of the API key (if valid).
     *
     * @generated from field: string api_key_name = 6;
     */
    apiKeyName: string;
    /**
     * Reason if validation failed.
     * Examples: "Key not found", "Key revoked", "Key expired"
     *
     * @generated from field: string failure_reason = 7;
     */
    failureReason: string;
};
/**
 * Describes the message api.vapor.v1.ValidateAPIKeyResponse.
 * Use `create(ValidateAPIKeyResponseSchema)` to create a new message.
 */
export declare const ValidateAPIKeyResponseSchema: GenMessage<ValidateAPIKeyResponse>;
/**
 * GetDefaultAPIKeyRequest retrieves the default overlay API key for a channel.
 *
 * @generated from message api.vapor.v1.GetDefaultAPIKeyRequest
 */
export type GetDefaultAPIKeyRequest = Message<"api.vapor.v1.GetDefaultAPIKeyRequest"> & {
    /**
     * Channel ID to get the default API key for.
     * @required
     *
     * @generated from field: string channel_id = 1;
     */
    channelId: string;
};
/**
 * Describes the message api.vapor.v1.GetDefaultAPIKeyRequest.
 * Use `create(GetDefaultAPIKeyRequestSchema)` to create a new message.
 */
export declare const GetDefaultAPIKeyRequestSchema: GenMessage<GetDefaultAPIKeyRequest>;
/**
 * GetDefaultAPIKeyResponse returns the default overlay API key.
 *
 * @generated from message api.vapor.v1.GetDefaultAPIKeyResponse
 */
export type GetDefaultAPIKeyResponse = Message<"api.vapor.v1.GetDefaultAPIKeyResponse"> & {
    /**
     * The default overlay API key for the channel.
     * This key always has the "overlay" role and is named "Overlay API Key".
     *
     * @generated from field: api.vapor.v1.APIKey api_key = 1;
     */
    apiKey?: APIKey;
};
/**
 * Describes the message api.vapor.v1.GetDefaultAPIKeyResponse.
 * Use `create(GetDefaultAPIKeyResponseSchema)` to create a new message.
 */
export declare const GetDefaultAPIKeyResponseSchema: GenMessage<GetDefaultAPIKeyResponse>;
/**
 * GetAuthContextRequest resolves a token to full authentication context.
 *
 * @generated from message api.vapor.v1.GetAuthContextRequest
 */
export type GetAuthContextRequest = Message<"api.vapor.v1.GetAuthContextRequest"> & {
    /**
     * JWT or API key token
     * @required
     * @sensitive: Contains authentication credentials
     *
     * @generated from field: string token = 1;
     */
    token: string;
    /**
     * @generated from field: api.vapor.v1.TokenType token_type = 2;
     */
    tokenType: TokenType;
};
/**
 * Describes the message api.vapor.v1.GetAuthContextRequest.
 * Use `create(GetAuthContextRequestSchema)` to create a new message.
 */
export declare const GetAuthContextRequestSchema: GenMessage<GetAuthContextRequest>;
/**
 * GetAuthContextResponse contains complete authentication context.
 *
 * @generated from message api.vapor.v1.GetAuthContextResponse
 */
export type GetAuthContextResponse = Message<"api.vapor.v1.GetAuthContextResponse"> & {
    /**
     * User information
     *
     * @generated from field: string user_id = 1;
     */
    userId: string;
    /**
     * System role: "staff", "user", "advertiser"
     *
     * @generated from field: string user_role = 2;
     */
    userRole: string;
    /**
     * Channel information (from token's channel_id)
     *
     * @generated from field: string channel_id = 3;
     */
    channelId: string;
    /**
     * "twitch", "youtube", etc.
     *
     * @generated from field: string provider = 4;
     */
    provider: string;
    /**
     * Platform-specific ID
     *
     * @generated from field: string provider_id = 5;
     */
    providerId: string;
    /**
     * Authorization details for this user+channel
     *
     * "owner", "administrator", "editor", "viewer", etc.
     *
     * @generated from field: string channel_role = 6;
     */
    channelRole: string;
    /**
     * Computed scopes based on channel role
     *
     * @generated from field: repeated string scopes = 7;
     */
    scopes: string[];
    /**
     * Session information
     *
     * @generated from field: string session_id = 8;
     */
    sessionId: string;
    /**
     * Channel owner ID (for reference)
     *
     * @generated from field: string channel_owner_id = 9;
     */
    channelOwnerId: string;
};
/**
 * Describes the message api.vapor.v1.GetAuthContextResponse.
 * Use `create(GetAuthContextResponseSchema)` to create a new message.
 */
export declare const GetAuthContextResponseSchema: GenMessage<GetAuthContextResponse>;
/**
 * Token type (defaults to JWT if not specified)
 *
 * @generated from enum api.vapor.v1.TokenType
 */
export declare enum TokenType {
    /**
     * @generated from enum value: TOKEN_TYPE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from enum value: TOKEN_TYPE_JWT = 1;
     */
    JWT = 1,
    /**
     * @generated from enum value: TOKEN_TYPE_API_KEY = 2;
     */
    API_KEY = 2,
    /**
     * @generated from enum value: TOKEN_TYPE_OAUTH2 = 3;
     */
    OAUTH2 = 3
}
/**
 * Describes the enum api.vapor.v1.TokenType.
 */
export declare const TokenTypeSchema: GenEnum<TokenType>;
/**
 * AuthService handles authentication, login, and impersonation operations.
 * This is the primary entry point for user authentication and session management.
 *
 * @generated from service api.vapor.v1.AuthService
 */
export declare const AuthService: GenService<{
    /**
     * Login is the method for streamer authentication and account creation.
     * This method creates a full streamer account including:
     * - User record
     * - Channel record with broadcasting capabilities
     * - OAuth connection linking the provider account to the channel
     * - Channel authorization (owner role)
     * - API key for the channel
     * - Authentication session and token
     * Use this ONLY for streamers who need channel functionality.
     * For staff/advertisers, use UserService.CreateUser instead.
     *
     * @generated from rpc api.vapor.v1.AuthService.Login
     */
    login: {
        methodKind: "unary";
        input: typeof LoginRequestSchema;
        output: typeof LoginResponseSchema;
    };
    /**
     * Unlink is the method to unlink a channel.
     *
     * @generated from rpc api.vapor.v1.AuthService.Unlink
     */
    unlink: {
        methodKind: "unary";
        input: typeof UnlinkRequestSchema;
        output: typeof UnlinkResponseSchema;
    };
    /**
     * ImpersonateChannel is the method to impersonate a channel.
     *
     * @generated from rpc api.vapor.v1.AuthService.ImpersonateChannel
     */
    impersonateChannel: {
        methodKind: "unary";
        input: typeof ImpersonateChannelRequestSchema;
        output: typeof ImpersonateChannelResponseSchema;
    };
    /**
     * Whoami is the method to get the current user/channel.
     *
     * @generated from rpc api.vapor.v1.AuthService.Whoami
     */
    whoami: {
        methodKind: "unary";
        input: typeof WhoamiRequestSchema;
        output: typeof WhoamiResponseSchema;
    };
    /**
     * GetAuthContext efficiently resolves a JWT/API key to full authentication context.
     * Similar to Whoami but returns channel details and computed scopes for the channel in the token.
     *
     * @generated from rpc api.vapor.v1.AuthService.GetAuthContext
     */
    getAuthContext: {
        methodKind: "unary";
        input: typeof GetAuthContextRequestSchema;
        output: typeof GetAuthContextResponseSchema;
    };
}>;
/**
 * SessionService manages user sessions for security and access control.
 * Sessions represent authenticated user connections with JWT tokens.
 * Use this service to monitor active sessions, revoke access, and enhance security.
 *
 * @generated from service api.vapor.v1.SessionService
 */
export declare const SessionService: GenService<{
    /**
     * ListUserSessions gets all active sessions for a user.
     * This is useful for security management and showing users where they're logged in.
     *
     * @generated from rpc api.vapor.v1.SessionService.ListUserSessions
     */
    listUserSessions: {
        methodKind: "unary";
        input: typeof ListUserSessionsRequestSchema;
        output: typeof ListUserSessionsResponseSchema;
    };
    /**
     * GetSession retrieves details about a specific session.
     * Can be used to verify session validity and get metadata.
     *
     * @generated from rpc api.vapor.v1.SessionService.GetSession
     */
    getSession: {
        methodKind: "unary";
        input: typeof GetSessionRequestSchema;
        output: typeof GetSessionResponseSchema;
    };
    /**
     * RevokeSession invalidates a specific session.
     * Use this to log out from a specific device/location.
     *
     * @generated from rpc api.vapor.v1.SessionService.RevokeSession
     */
    revokeSession: {
        methodKind: "unary";
        input: typeof RevokeSessionRequestSchema;
        output: typeof RevokeSessionResponseSchema;
    };
    /**
     * RevokeAllUserSessions invalidates all sessions for a user.
     * This is a security feature to force re-authentication everywhere.
     *
     * @generated from rpc api.vapor.v1.SessionService.RevokeAllUserSessions
     */
    revokeAllUserSessions: {
        methodKind: "unary";
        input: typeof RevokeAllUserSessionsRequestSchema;
        output: typeof RevokeAllUserSessionsResponseSchema;
    };
}>;
/**
 * UserService manages user accounts and profiles.
 * Users are the core identity in the system and can have multiple channels.
 * This service handles user lifecycle, suspension, and primary channel management.
 *
 * @generated from service api.vapor.v1.UserService
 */
export declare const UserService: GenService<{
    /**
     * GetUserByID is the method to get the user by id.
     *
     * @generated from rpc api.vapor.v1.UserService.GetUserByID
     */
    getUserByID: {
        methodKind: "unary";
        input: typeof GetUserByIDRequestSchema;
        output: typeof GetUserByIDResponseSchema;
    };
    /**
     * GetUserByEmail is the method to get the user by email.
     *
     * @generated from rpc api.vapor.v1.UserService.GetUserByEmail
     */
    getUserByEmail: {
        methodKind: "unary";
        input: typeof GetUserByEmailRequestSchema;
        output: typeof GetUserByEmailResponseSchema;
    };
    /**
     * SetPrimaryChannel is the method to set the primary channel.
     *
     * @generated from rpc api.vapor.v1.UserService.SetPrimaryChannel
     */
    setPrimaryChannel: {
        methodKind: "unary";
        input: typeof SetPrimaryChannelRequestSchema;
        output: typeof SetPrimaryChannelResponseSchema;
    };
    /**
     * SuspendUser is the method to suspend a user.
     *
     * @generated from rpc api.vapor.v1.UserService.SuspendUser
     */
    suspendUser: {
        methodKind: "unary";
        input: typeof SuspendUserRequestSchema;
        output: typeof SuspendUserResponseSchema;
    };
    /**
     * @generated from rpc api.vapor.v1.UserService.CreateUser
     */
    createUser: {
        methodKind: "unary";
        input: typeof CreateUserRequestSchema;
        output: typeof CreateUserResponseSchema;
    };
    /**
     * DeleteUser permanently deletes a user and ALL associated data.
     * WARNING: This operation is IRREVERSIBLE and will:
     * - Delete the user record
     * - Revoke all user sessions
     * - Delete all user authorizations
     * - Delete all user connections
     * - Delete all channels owned by the user (and their associated data)
     * - Publish a user deletion event
     * This should only be used for GDPR compliance or severe ToS violations.
     *
     * @generated from rpc api.vapor.v1.UserService.DeleteUser
     */
    deleteUser: {
        methodKind: "unary";
        input: typeof DeleteUserRequestSchema;
        output: typeof DeleteUserResponseSchema;
    };
}>;
/**
 * ChannelService manages streaming channels and their metadata.
 * Channels represent broadcaster accounts from various streaming platforms.
 * Each channel has an owner and can have multiple authorized users.
 *
 * @generated from service api.vapor.v1.ChannelService
 */
export declare const ChannelService: GenService<{
    /**
     * GetChannelAccessToken is the method to get the channel access token.
     *
     * @generated from rpc api.vapor.v1.ChannelService.GetChannelAccessToken
     */
    getChannelAccessToken: {
        methodKind: "unary";
        input: typeof GetChannelAccessTokenRequestSchema;
        output: typeof GetChannelAccessTokenResponseSchema;
    };
    /**
     * GetChannelByID is the method to get the channel by id.
     *
     * @generated from rpc api.vapor.v1.ChannelService.GetChannelByID
     */
    getChannelByID: {
        methodKind: "unary";
        input: typeof GetChannelByIDRequestSchema;
        output: typeof GetChannelByIDResponseSchema;
    };
    /**
     * GetChannelByConnectionID is the method to get the channel by connection id.
     *
     * @generated from rpc api.vapor.v1.ChannelService.GetChannelByConnectionID
     */
    getChannelByConnectionID: {
        methodKind: "unary";
        input: typeof GetChannelByConnectionIDRequestSchema;
        output: typeof GetChannelByConnectionIDResponseSchema;
    };
    /**
     * GetChannelByProviderID is the method to get the channel by provider id.
     *
     * @generated from rpc api.vapor.v1.ChannelService.GetChannelByProviderID
     */
    getChannelByProviderID: {
        methodKind: "unary";
        input: typeof GetChannelByProviderIDRequestSchema;
        output: typeof GetChannelByProviderIDResponseSchema;
    };
    /**
     * UpdateAccessToken is the method to update the access token.
     *
     * @generated from rpc api.vapor.v1.ChannelService.UpdateAccessToken
     */
    updateAccessToken: {
        methodKind: "unary";
        input: typeof UpdateAccessTokenRequestSchema;
        output: typeof UpdateAccessTokenResponseSchema;
    };
    /**
     * AddChannel adds a channel to an existing user.
     * If the channel doesn't exist, it creates a new channel.
     * If the channel already exists, it transfers ownership to the user.
     *
     * @generated from rpc api.vapor.v1.ChannelService.AddChannel
     */
    addChannel: {
        methodKind: "unary";
        input: typeof AddChannelRequestSchema;
        output: typeof AddChannelResponseSchema;
    };
    /**
     * DeleteChannel permanently deletes a channel and ALL associated data.
     * WARNING: This operation is IRREVERSIBLE and will:
     * - Delete the channel record
     * - Delete all API keys for the channel
     * - Delete all user authorizations for the channel
     * - Delete all pending invitations for the channel
     * - Delete the channel's connection
     * - Clear primary channel references if applicable
     * - Publish a channel deletion event
     * This should only be used when a channel is permanently discontinued.
     *
     * @generated from rpc api.vapor.v1.ChannelService.DeleteChannel
     */
    deleteChannel: {
        methodKind: "unary";
        input: typeof DeleteChannelRequestSchema;
        output: typeof DeleteChannelResponseSchema;
    };
    /**
     * SearchChannels searches channels using Atlas Search with optional filters.
     * Supports free-text query across username, display_name, and alias with
     * provider/type/country/language filters and pagination.
     *
     * @generated from rpc api.vapor.v1.ChannelService.SearchChannels
     */
    searchChannels: {
        methodKind: "unary";
        input: typeof SearchChannelsRequestSchema;
        output: typeof SearchChannelsResponseSchema;
    };
}>;
/**
 * AuthorizationService manages role-based access control (RBAC) for channels.
 * This service controls who can access channels and what actions they can perform.
 * Supports invitation-based access grants and direct authorization management.
 *
 * Role hierarchy (highest to lowest):
 * - owner: Full control, can delete channel, transfer ownership
 * - administrator: Manage users, settings, cannot delete channel
 * - editor: Modify channel content and settings
 * - viewer: Read-only access to channel data
 *
 * @generated from service api.vapor.v1.AuthorizationService
 */
export declare const AuthorizationService: GenService<{
    /**
     * CreateAuthorization grants a user access to a channel with a specific role.
     * This is used when directly assigning permissions without an invitation.
     * Note: If role is "owner", any existing owner will be demoted to "administrator".
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.CreateAuthorization
     */
    createAuthorization: {
        methodKind: "unary";
        input: typeof CreateAuthorizationRequestSchema;
        output: typeof CreateAuthorizationResponseSchema;
    };
    /**
     * UpdateAuthorization modifies a user's role for a channel.
     * Only channel owners and admins can update authorizations.
     * Note: If role is "owner", any existing owner will be demoted to "administrator".
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.UpdateAuthorization
     */
    updateAuthorization: {
        methodKind: "unary";
        input: typeof UpdateAuthorizationRequestSchema;
        output: typeof UpdateAuthorizationResponseSchema;
    };
    /**
     * RevokeAuthorization removes a user's access to a channel.
     * This completely removes the authorization record.
     * Note: Cannot revoke the last owner of a channel.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.RevokeAuthorization
     */
    revokeAuthorization: {
        methodKind: "unary";
        input: typeof RevokeAuthorizationRequestSchema;
        output: typeof RevokeAuthorizationResponseSchema;
    };
    /**
     * GetAuthorization retrieves a specific authorization for a user and channel.
     * Use this to check if a user has access to a channel and their role.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.GetAuthorization
     */
    getAuthorization: {
        methodKind: "unary";
        input: typeof GetAuthorizationRequestSchema;
        output: typeof GetAuthorizationResponseSchema;
    };
    /**
     * ListUserAuthorizations lists all channel authorizations for a user.
     * Returns all channels the user has access to with their roles.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.ListUserAuthorizations
     */
    listUserAuthorizations: {
        methodKind: "unary";
        input: typeof ListUserAuthorizationsRequestSchema;
        output: typeof ListUserAuthorizationsResponseSchema;
    };
    /**
     * ListChannelAuthorizations lists all users who have access to a channel.
     * Returns all users with their authorization levels for the channel.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.ListChannelAuthorizations
     */
    listChannelAuthorizations: {
        methodKind: "unary";
        input: typeof ListChannelAuthorizationsRequestSchema;
        output: typeof ListChannelAuthorizationsResponseSchema;
    };
    /**
     * CheckPermission verifies if a user has a specific permission for a channel.
     * This is a convenience method for permission checks.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.CheckPermission
     */
    checkPermission: {
        methodKind: "unary";
        input: typeof CheckPermissionRequestSchema;
        output: typeof CheckPermissionResponseSchema;
    };
    /**
     * Invitation management
     * CreateInvite is the method to create an invite.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.CreateInvite
     */
    createInvite: {
        methodKind: "unary";
        input: typeof CreateInviteRequestSchema;
        output: typeof CreateInviteResponseSchema;
    };
    /**
     * AcceptInvite is the method to accept an invite.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.AcceptInvite
     */
    acceptInvite: {
        methodKind: "unary";
        input: typeof AcceptInviteRequestSchema;
        output: typeof AcceptInviteResponseSchema;
    };
    /**
     * DeclineInvite is the method to decline an invite.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.DeclineInvite
     */
    declineInvite: {
        methodKind: "unary";
        input: typeof DeclineInviteRequestSchema;
        output: typeof DeclineInviteResponseSchema;
    };
    /**
     * RevokeInvite is the method to revoke an invite.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.RevokeInvite
     */
    revokeInvite: {
        methodKind: "unary";
        input: typeof RevokeInviteRequestSchema;
        output: typeof RevokeInviteResponseSchema;
    };
    /**
     * GetInvites is the method to get all invites.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.GetInvites
     */
    getInvites: {
        methodKind: "unary";
        input: typeof GetInvitesRequestSchema;
        output: typeof GetInvitesResponseSchema;
    };
    /**
     * GetInviteByCode is the method to get an invite by code.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.GetInviteByCode
     */
    getInviteByCode: {
        methodKind: "unary";
        input: typeof GetInviteByCodeRequestSchema;
        output: typeof GetInviteByCodeResponseSchema;
    };
    /**
     * User-Channel relationship queries
     * ListUserChannels gets all channels that a user has access to.
     * Returns both the channel details and the user's authorization level for each channel.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.ListUserChannels
     */
    listUserChannels: {
        methodKind: "unary";
        input: typeof ListUserChannelsRequestSchema;
        output: typeof ListUserChannelsResponseSchema;
    };
    /**
     * ListChannelUsers gets all users who have access to a channel.
     * Returns user details along with their authorization level for the channel.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.ListChannelUsers
     */
    listChannelUsers: {
        methodKind: "unary";
        input: typeof ListChannelUsersRequestSchema;
        output: typeof ListChannelUsersResponseSchema;
    };
    /**
     * GetRoles returns all available channel roles and their associated permissions/scopes.
     * This is useful for UI components to understand role capabilities.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.GetRoles
     */
    getRoles: {
        methodKind: "unary";
        input: typeof GetRolesRequestSchema;
        output: typeof GetRolesResponseSchema;
    };
    /**
     * TransferOwnership transfers channel ownership from the current owner to another user.
     * This is a critical operation that requires the current user to be the channel owner.
     * The new owner must not already be an owner of the channel.
     *
     * @generated from rpc api.vapor.v1.AuthorizationService.TransferOwnership
     */
    transferOwnership: {
        methodKind: "unary";
        input: typeof TransferOwnershipRequestSchema;
        output: typeof TransferOwnershipResponseSchema;
    };
}>;
/**
 * ConnectionService manages OAuth connections and their access tokens.
 * This service handles bulk operations for token management, particularly
 * useful for refreshing tokens that expire frequently (e.g., YouTube tokens).
 *
 * Key features:
 * - List connections with expiring/expired tokens
 * - Bulk update access tokens for multiple connections
 * - Efficient cursor-based pagination for large datasets
 *
 * @generated from service api.vapor.v1.ConnectionService
 */
export declare const ConnectionService: GenService<{
    /**
     * ListExpiringConnections retrieves connections with tokens expiring soon.
     * Uses cursor-based pagination for efficient traversal of large datasets.
     * Useful for identifying tokens that need refreshing.
     *
     * @generated from rpc api.vapor.v1.ConnectionService.ListExpiringConnections
     */
    listExpiringConnections: {
        methodKind: "unary";
        input: typeof ListExpiringConnectionsRequestSchema;
        output: typeof ListExpiringConnectionsResponseSchema;
    };
    /**
     * BulkUpdateAccessTokens updates tokens for multiple connections at once.
     * Supports up to 1000 updates in a single request for efficiency.
     * Uses MongoDB bulk write operations for optimal performance.
     *
     * @generated from rpc api.vapor.v1.ConnectionService.BulkUpdateAccessTokens
     */
    bulkUpdateAccessTokens: {
        methodKind: "unary";
        input: typeof BulkUpdateAccessTokensRequestSchema;
        output: typeof BulkUpdateAccessTokensResponseSchema;
    };
}>;
/**
 * APIKeyService manages API keys for service-to-service authentication.
 * API keys provide programmatic access to channels without user sessions.
 * Keys are scoped to specific channels and can be rotated for security.
 *
 * Security best practices:
 * - Rotate keys regularly (recommended: every 90 days)
 * - Use different keys for different environments
 * - Never expose keys in client-side code
 * - Revoke compromised keys immediately
 * - Monitor key usage for anomalies
 *
 * @generated from service api.vapor.v1.APIKeyService
 */
export declare const APIKeyService: GenService<{
    /**
     * CreateAPIKey generates a new API key for a channel.
     * Only channel owners and administrators can create API keys.
     * Each channel can have multiple active keys.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.CreateAPIKey
     */
    createAPIKey: {
        methodKind: "unary";
        input: typeof CreateAPIKeyRequestSchema;
        output: typeof CreateAPIKeyResponseSchema;
    };
    /**
     * ListAPIKeys retrieves all API keys for a channel.
     * Keys are returned without the actual key value for security.
     * Only channel owners and administrators can list keys.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.ListAPIKeys
     */
    listAPIKeys: {
        methodKind: "unary";
        input: typeof ListAPIKeysRequestSchema;
        output: typeof ListAPIKeysResponseSchema;
    };
    /**
     * GetAPIKey retrieves details about a specific API key.
     * The actual key value is never returned after creation.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.GetAPIKey
     */
    getAPIKey: {
        methodKind: "unary";
        input: typeof GetAPIKeyRequestSchema;
        output: typeof GetAPIKeyResponseSchema;
    };
    /**
     * RotateAPIKey creates a new key and optionally revokes the old one.
     * Useful for regular key rotation or when a key may be compromised.
     * Returns the new key value which should be stored securely.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.RotateAPIKey
     */
    rotateAPIKey: {
        methodKind: "unary";
        input: typeof RotateAPIKeyRequestSchema;
        output: typeof RotateAPIKeyResponseSchema;
    };
    /**
     * RevokeAPIKey immediately invalidates an API key.
     * Revoked keys cannot be restored - create a new key if needed.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.RevokeAPIKey
     */
    revokeAPIKey: {
        methodKind: "unary";
        input: typeof RevokeAPIKeyRequestSchema;
        output: typeof RevokeAPIKeyResponseSchema;
    };
    /**
     * ValidateAPIKey checks if an API key is valid and returns associated metadata.
     * Used internally for authentication - not typically called by clients.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.ValidateAPIKey
     */
    validateAPIKey: {
        methodKind: "unary";
        input: typeof ValidateAPIKeyRequestSchema;
        output: typeof ValidateAPIKeyResponseSchema;
    };
    /**
     * GetDefaultAPIKey retrieves the default (overlay) API key for a channel.
     * Every channel has a default overlay API key that's created automatically.
     * This is typically used by the StreamElements overlay system.
     *
     * @generated from rpc api.vapor.v1.APIKeyService.GetDefaultAPIKey
     */
    getDefaultAPIKey: {
        methodKind: "unary";
        input: typeof GetDefaultAPIKeyRequestSchema;
        output: typeof GetDefaultAPIKeyResponseSchema;
    };
}>;
/**
 * FeatureService manages feature flags for controlled feature rollout.
 * Features can be enabled/disabled per user or channel with global defaults.
 * Use this for A/B testing, gradual rollouts, and premium feature management.
 *
 * Feature naming conventions:
 * - Use kebab-case (e.g., "dark-mode", "api-v2")
 * - Prefix with category (e.g., "ui-dark-mode", "api-rate-limit")
 * - Use descriptive names that indicate the feature's purpose
 *
 * @generated from service api.vapor.v1.FeatureService
 */
export declare const FeatureService: GenService<{
    /**
     * SetFeature enables or disables a feature for an entity.
     *
     * @generated from rpc api.vapor.v1.FeatureService.SetFeature
     */
    setFeature: {
        methodKind: "unary";
        input: typeof SetFeatureRequestSchema;
        output: typeof SetFeatureResponseSchema;
    };
    /**
     * RemoveFeature removes a feature record for an entity.
     *
     * @generated from rpc api.vapor.v1.FeatureService.RemoveFeature
     */
    removeFeature: {
        methodKind: "unary";
        input: typeof RemoveFeatureRequestSchema;
        output: typeof RemoveFeatureResponseSchema;
    };
    /**
     * GetFeatures returns all features for an entity.
     *
     * @generated from rpc api.vapor.v1.FeatureService.GetFeatures
     */
    getFeatures: {
        methodKind: "unary";
        input: typeof GetFeaturesRequestSchema;
        output: typeof GetFeaturesResponseSchema;
    };
    /**
     * HasFeature checks if an entity has a specific feature enabled.
     *
     * @generated from rpc api.vapor.v1.FeatureService.HasFeature
     */
    hasFeature: {
        methodKind: "unary";
        input: typeof HasFeatureRequestSchema;
        output: typeof HasFeatureResponseSchema;
    };
    /**
     * SetMultipleFeatures sets multiple features for an entity at once.
     *
     * @generated from rpc api.vapor.v1.FeatureService.SetMultipleFeatures
     */
    setMultipleFeatures: {
        methodKind: "unary";
        input: typeof SetMultipleFeaturesRequestSchema;
        output: typeof SetMultipleFeaturesResponseSchema;
    };
    /**
     * SetGlobalDefault sets a global default value for a feature (admin only).
     *
     * @generated from rpc api.vapor.v1.FeatureService.SetGlobalDefault
     */
    setGlobalDefault: {
        methodKind: "unary";
        input: typeof SetGlobalDefaultRequestSchema;
        output: typeof SetGlobalDefaultResponseSchema;
    };
    /**
     * GetGlobalDefaults returns all global default feature values.
     *
     * @generated from rpc api.vapor.v1.FeatureService.GetGlobalDefaults
     */
    getGlobalDefaults: {
        methodKind: "unary";
        input: typeof GetGlobalDefaultsRequestSchema;
        output: typeof GetGlobalDefaultsResponseSchema;
    };
    /**
     * RemoveGlobalDefault removes a global default feature value.
     *
     * @generated from rpc api.vapor.v1.FeatureService.RemoveGlobalDefault
     */
    removeGlobalDefault: {
        methodKind: "unary";
        input: typeof RemoveGlobalDefaultRequestSchema;
        output: typeof RemoveGlobalDefaultResponseSchema;
    };
}>;
//# sourceMappingURL=vapor_pb.d.ts.map