/**
 * Zulip Node - Version 1
 * Discriminator: resource=stream, operation=update
 */


interface Credentials {
  zulipApi: CredentialReference;
}

/** Update a message */
export type ZulipV1StreamUpdateParams = {
  resource: 'stream';
  operation: 'update';
/**
 * ID of stream to update
 */
    streamId?: string | Expression<string> | PlaceholderValue;
/**
 * JSON Parameters
 * @default false
 */
    jsonParameters?: boolean | Expression<boolean>;
/**
 * JSON format parameters for stream creation
 * @displayOptions.show { jsonParameters: [true] }
 */
    additionalFieldsJson?: IDataObject | string | Expression<string>;
/**
 * Additional Fields
 * @displayOptions.show { jsonParameters: [false] }
 * @default {}
 */
    additionalFields?: {
    /** Whether the stream is limited to announcements
     * @default false
     */
    isAnnouncementOnly?: boolean | Expression<boolean>;
    /** The new description for the stream
     */
    description?: string | Expression<string> | PlaceholderValue;
    /** Whether the stream is a private stream
     * @default false
     */
    isPrivate?: boolean | Expression<boolean>;
    /** Whether the streams message history should be available to newly subscribed members, or users can only access messages they actually received while subscribed to the stream
     * @default false
     */
    historyPublicToSubscribers?: boolean | Expression<boolean>;
    /** The new name for the stream
     */
    newName?: string | Expression<string> | PlaceholderValue;
    /** Policy for which users can post messages to the stream
     */
    streamPostPolicy?: 1 | 2 | 3 | Expression<number>;
  };
};

export type ZulipV1StreamUpdateNode = {
  type: 'n8n-nodes-base.zulip';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<ZulipV1StreamUpdateParams>;
};