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
28pub const DEFAULT_IMAGE_BASE: &str = "https://image.novelai.net";
30pub const DEFAULT_API_BASE: &str = "https://api.novelai.net";
32pub const DEFAULT_TIMEOUT_MS: u64 = 120_000;
34
35pub type ImageStreamItem = Result<ImageStreamChunk, BridgeError>;
37pub type ImageStreamResult = Pin<Box<dyn Stream<Item = ImageStreamItem> + Send>>;