import { CID } from "multiformats" import type { Configuration } from "../../configuration.js" import * as Crypto from "../../components/crypto/implementation.js" import * as Depot from "../../components/depot/implementation.js" import * as Reference from "../../components/reference/implementation.js" import * as Storage from "../../components/storage/implementation.js" import * as FileSystem from "../../fs/types.js" export type ImplementationOptions = { configuration: Configuration } export type DataComponents = { crypto: Crypto.Implementation depot: Depot.Implementation reference: Reference.Implementation storage: Storage.Implementation } export type Implementation = { log: (...args: unknown[]) => void warn: (...args: unknown[]) => void /** * Configure how the wnfs wasm module should be loaded. * * This only has an effect if you're using file systems of version 3 or higher. * * By default this loads the required version of the wasm wnfs module from unpkg.com. */ wnfsWasmLookup: (wnfsVersion: string) => Promise /** * File system. */ fileSystem: { /** * Various file system hooks. */ hooks: { afterLoadExisting: (fs: FileSystem.API, account: FileSystem.AssociatedIdentity, dataComponents: DataComponents) => Promise afterLoadNew: (fs: FileSystem.API, account: FileSystem.AssociatedIdentity, dataComponents: DataComponents) => Promise beforeLoadExisting: (cid: CID, account: FileSystem.AssociatedIdentity, dataComponents: DataComponents) => Promise beforeLoadNew: (account: FileSystem.AssociatedIdentity, dataComponents: DataComponents) => Promise } } }