1pub mod config;
17pub use config::*;
18
19#[cfg(feature = "cosign")]
20pub(crate) mod oci_client;
21#[cfg(feature = "cosign")]
22pub(crate) use oci_client::*;
23
24#[cfg(feature = "cosign")]
25pub mod oci_reference;
26#[cfg(feature = "cosign")]
27pub use oci_reference::OciReference;
28
29#[cfg(all(feature = "cosign", feature = "cached-client"))]
30pub(crate) mod oci_caching_client;
31#[cfg(all(feature = "cosign", feature = "cached-client"))]
32pub(crate) use oci_caching_client::*;
33
34use crate::errors::Result;
35
36use async_trait::async_trait;
37
38use ::oci_client as oci_client_dep;
39
40#[cfg(not(target_arch = "wasm32"))]
48pub(crate) trait ClientCapabilitiesDeps: Send + Sync {}
49
50#[cfg(target_arch = "wasm32")]
58pub(crate) trait ClientCapabilitiesDeps {}
59
60#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
61#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
62pub(crate) trait ClientCapabilities: ClientCapabilitiesDeps {
64 async fn fetch_manifest_digest(
65 &mut self,
66 image: &oci_client_dep::Reference,
67 auth: &oci_client_dep::secrets::RegistryAuth,
68 ) -> Result<String>;
69
70 async fn pull(
71 &mut self,
72 image: &oci_client_dep::Reference,
73 auth: &oci_client_dep::secrets::RegistryAuth,
74 accepted_media_types: Vec<&str>,
75 ) -> Result<oci_client_dep::client::ImageData>;
76
77 async fn pull_manifest(
78 &mut self,
79 image: &oci_client_dep::Reference,
80 auth: &oci_client_dep::secrets::RegistryAuth,
81 ) -> Result<(oci_client_dep::manifest::OciManifest, String)>;
82
83 async fn push(
84 &mut self,
85 image_ref: &oci_client_dep::Reference,
86 layers: &[oci_client_dep::client::ImageLayer],
87 config: oci_client_dep::client::Config,
88 auth: &oci_client_dep::secrets::RegistryAuth,
89 manifest: Option<oci_client_dep::manifest::OciImageManifest>,
90 ) -> Result<oci_client_dep::client::PushResponse>;
91}