# benchweave_sdk > Offline authoring and conformance tools for BenchWeave OTDP device plugins. ## Docs ### API Reference #### Protocols > Protocol / structural-typing interfaces - [Adapter](https://madeinoz67.github.io/benchweave-sdk/docs/reference/Adapter.html): Structural contract for a device plugin adapter - [HostServices](https://madeinoz67.github.io/benchweave-sdk/docs/reference/HostServices.html): Scoped host services: clocks, transport, and evidence recording - [OperationContext](https://madeinoz67.github.io/benchweave-sdk/docs/reference/OperationContext.html): Per-operation identity, deadline, and cancellation state - [interfaces.CaptureServices](https://madeinoz67.github.io/benchweave-sdk/docs/reference/interfaces.CaptureServices.html) #### Testing doubles > Deterministic, hardware-free host and context doubles - [testing.MockHost](https://madeinoz67.github.io/benchweave-sdk/docs/reference/testing.MockHost.html) - [testing.MockContext](https://madeinoz67.github.io/benchweave-sdk/docs/reference/testing.MockContext.html) - [testing.ConformanceError](https://madeinoz67.github.io/benchweave-sdk/docs/reference/testing.ConformanceError.html) #### Conformance > Reusable adapter lifecycle and operation checks - [conformance.check_operation](https://madeinoz67.github.io/benchweave-sdk/docs/reference/conformance.check_operation.html) - [conformance.check_lifecycle](https://madeinoz67.github.io/benchweave-sdk/docs/reference/conformance.check_lifecycle.html) #### Validation > Offline schema and semantic checks against the vendored contracts - [validation.contract_documents](https://madeinoz67.github.io/benchweave-sdk/docs/reference/validation.contract_documents.html) - [validation.validate](https://madeinoz67.github.io/benchweave-sdk/docs/reference/validation.validate.html) - [validation.validate_request](https://madeinoz67.github.io/benchweave-sdk/docs/reference/validation.validate_request.html) - [validation.validate_result](https://madeinoz67.github.io/benchweave-sdk/docs/reference/validation.validate_result.html) - [validation.validate_descriptor](https://madeinoz67.github.io/benchweave-sdk/docs/reference/validation.validate_descriptor.html) #### Presentation > Offline presentation validation and bounded, symlink-refusing reads - [presentation.read_file](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.read_file.html) - [presentation.check_ui](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.check_ui.html) - [presentation.validate_preset](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.validate_preset.html) - [presentation.validate_presentation](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.validate_presentation.html) - [presentation.load_validated_preview_inputs](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.load_validated_preview_inputs.html) - [presentation.ValidatedPreviewInputs](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.ValidatedPreviewInputs.html) - [presentation.resolve_preset_action](https://madeinoz67.github.io/benchweave-sdk/docs/reference/presentation.resolve_preset_action.html) #### Packaging > Deterministic bundle inventory helpers - [packaging.inventory](https://madeinoz67.github.io/benchweave-sdk/docs/reference/packaging.inventory.html) - [packaging.verify_inventory](https://madeinoz67.github.io/benchweave-sdk/docs/reference/packaging.verify_inventory.html)