Skip to main content

novelai_bridge/
lib.rs

1use std::pin::Pin;
2
3use futures_core::Stream;
4
5mod client;
6mod error;
7mod internal;
8mod metadata;
9mod transport;
10mod types;
11
12pub use client::{Client, ClientOptions};
13pub use error::{BridgeError, BridgeErrorCode};
14pub use metadata::{
15    PngMetadata, VibeMetadataEntry, VibeMetadataSource,
16    extract_embedded_vibe_document_from_png_bytes, parse_png_metadata_from_bytes,
17    parse_png_metadata_from_payload,
18};
19pub use transport::{ReqwestTransport, Transport};
20pub use types::{
21    ApiKeySource, Character, CharacterPosition, CharacterReference, CharacterReferenceType,
22    ControlNetConfig, ControlNetInput, DirectorTool, EncodeVibeRequest, GenerateImageRequest,
23    GenerateImageStreamRequest, GeneratedImage, ImageFormat, ImageSize, ImageStreamChunk,
24    Img2ImgRequest, Model, NoiseSchedule, RunDirectorToolRequest, Sampler, StreamMode,
25    SubscriptionInfo, UcPreset,
26};
27
28/// Default base URL for image-generation endpoints.
29pub const DEFAULT_IMAGE_BASE: &str = "https://image.novelai.net";
30/// Default base URL for non-image API endpoints.
31pub const DEFAULT_API_BASE: &str = "https://api.novelai.net";
32/// Default HTTP timeout used by [`ClientOptions`], in milliseconds.
33pub const DEFAULT_TIMEOUT_MS: u64 = 120_000;
34
35/// A single parsed item yielded by [`Client::generate_stream`].
36pub type ImageStreamItem = Result<ImageStreamChunk, BridgeError>;
37/// The streaming result returned by [`Client::generate_stream`].
38pub type ImageStreamResult = Pin<Box<dyn Stream<Item = ImageStreamItem> + Send>>;