# @xyo-network/abstract-witness

> Primary SDK for using XYO Protocol 2.0

Latest version **5.3.30** (published 2026-04-06) · LGPL-3.0-only license · 1.5K weekly downloads

## Install

```sh
npm install @xyo-network/abstract-witness
pnpm add @xyo-network/abstract-witness
yarn add @xyo-network/abstract-witness
bun add @xyo-network/abstract-witness
```

## Health

**Score 65/100 (B)** — status: stable.

Positive: has types; esm support; no vulnerabilities.

## Facts

| | |
|---|---|
| Version | 5.3.30 |
| Published | 2026-04-06 |
| First published | 2023-06-28 |
| Weekly downloads | 1.5K |
| License | LGPL-3.0-only |
| TypeScript types | bundled |
| Module format | ESM |
| Dependencies | 3 |
| Unpacked size | 59.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | XYO Development Team |
| Maintainers | xyo, joelbcarter, rphansen91, jordantrouw, jonesmac |

## Links

- npm: https://www.npmjs.com/package/@xyo-network/abstract-witness
- Repository: https://github.com/XYOracleNetwork/sdk-xyo-client-js
- Homepage: https://xyo.network
- Issues: git+https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues
- npm.io page: https://npm.io/package/@xyo-network/abstract-witness

## Dependencies (3)

- [@xyo-network/payload-model](https://npm.io/package/@xyo-network/payload-model.md) ~5.3.30
- [@xyo-network/boundwitness-model](https://npm.io/package/@xyo-network/boundwitness-model.md) ~5.3.30
- [@xyo-network/boundwitness-wrapper](https://npm.io/package/@xyo-network/boundwitness-wrapper.md) ~5.3.30

## Recent versions

- 5.3.30 (latest) — 2026-04-06
- 3.10.0-rc.1 (next) — 2025-03-19
- 5.3.29 — 2026-04-06
- 5.3.27 — 2026-04-04
- 5.3.26 — 2026-04-03
- 5.3.25 — 2026-04-02
- 5.3.24 — 2026-04-02
- 5.3.22 — 2026-04-02
- 5.3.20 — 2026-03-30
- 5.3.17 — 2026-03-26
- 5.3.16 — 2026-03-11
- 5.3.15 — 2026-02-28
- 5.3.13 — 2026-02-27
- 5.3.12 — 2026-02-27
- 5.3.11 — 2026-02-27
- … 738 more at https://npm.io/package/@xyo-network/abstract-witness/versions

## README

[![logo][]](https://xyo.network)

# @xyo-network/abstract-witness

[![npm][npm-badge]][npm-link]
[![license][license-badge]][license-link]

> Primary SDK for using XYO Protocol 2.0

## Install

Using npm:

```sh
npm install {{name}}
```

Using yarn:

```sh
yarn add {{name}}
```

Using pnpm:

```sh
pnpm add {{name}}
```

Using bun:

```sh
bun add {{name}}
```


## License

See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).

## Reference

### packages

  ### modules

    ### packages

      ### witness

        ### packages

          ### abstract

            ### .temp-typedoc

              ### classes

                ### <a id="AbstractWitness"></a>AbstractWitness

[**@xyo-network/abstract-witness**](#../README)

***

## Extends

- `AbstractModuleInstance`\<`TParams`, `TEventData`\>

## Type Parameters

### TParams

`TParams` *extends* `WitnessParams` = `WitnessParams`

### TIn

`TIn` *extends* `Payload` = `Payload`

### TOut

`TOut` *extends* `Payload` = `Payload`

### TEventData

`TEventData` *extends* `WitnessModuleEventData`\<`WitnessInstance`\<`TParams`, `TIn`, `TOut`\>, `TIn`, `TOut`\> = `WitnessModuleEventData`\<`WitnessInstance`\<`TParams`, `TIn`, `TOut`\>, `TIn`, `TOut`\>

## Implements

- `CustomWitnessInstance`\<`TParams`, `TIn`, `TOut`, `TEventData`\>

## Constructors

### Constructor

```ts
new AbstractWitness<TParams, TIn, TOut, TEventData>(key, params): AbstractWitness<TParams, TIn, TOut, TEventData>;
```

### Parameters

#### key

`unknown`

#### params

`Partial`\<`TParams` & `RequiredCreatableParams`\>

### Returns

`AbstractWitness`\<`TParams`, `TIn`, `TOut`, `TEventData`\>

### Inherited from

```ts
AbstractModuleInstance<TParams, TEventData>.constructor
```

## Properties

### configSchemas

```ts
readonly static configSchemas: Schema[];
```

### Overrides

```ts
AbstractModuleInstance.configSchemas
```

***

### defaultConfigSchema

```ts
readonly static defaultConfigSchema: Schema = WitnessConfigSchema;
```

### Overrides

```ts
AbstractModuleInstance.defaultConfigSchema
```

***

### uniqueName

```ts
readonly static uniqueName: string;
```

### Overrides

```ts
AbstractModuleInstance.uniqueName
```

***

### allowRandomAccount

```ts
readonly static allowRandomAccount: boolean;
```

### Inherited from

```ts
AbstractModuleInstance.allowRandomAccount
```

***

### defaultLogger

```ts
static defaultLogger: Logger;
```

### Inherited from

```ts
AbstractModuleInstance.defaultLogger
```

***

### enableLazyLoad

```ts
static enableLazyLoad: boolean;
```

### Inherited from

```ts
AbstractModuleInstance.enableLazyLoad
```

***

### labels

```ts
readonly static labels: Labels;
```

### Inherited from

```ts
AbstractModuleInstance.labels
```

***

### privateConstructorKey

```ts
protected static privateConstructorKey: string;
```

### Inherited from

```ts
AbstractModuleInstance.privateConstructorKey
```

***

### \_account

```ts
protected _account: AccountInstance | undefined;
```

### Inherited from

```ts
AbstractModuleInstance._account
```

***

### \_cachedManifests

```ts
protected _cachedManifests: LRUCache<number, ModuleManifestPayload, unknown>;
```

### Inherited from

```ts
AbstractModuleInstance._cachedManifests
```

***

### \_globalReentrancyMutex

```ts
protected _globalReentrancyMutex: Mutex | undefined;
```

### Inherited from

```ts
AbstractModuleInstance._globalReentrancyMutex
```

***

### \_lastError?

```ts
protected optional _lastError?: ModuleDetailsError;
```

### Inherited from

```ts
AbstractModuleInstance._lastError
```

***

### \_moduleConfigQueryValidator

```ts
protected _moduleConfigQueryValidator: Queryable | undefined;
```

### Inherited from

```ts
AbstractModuleInstance._moduleConfigQueryValidator
```

***

### \_supportedQueryValidator

```ts
protected _supportedQueryValidator: Queryable | undefined;
```

### Inherited from

```ts
AbstractModuleInstance._supportedQueryValidator
```

***

### useNewResolver

```ts
readonly static useNewResolver: false = false;
```

### Inherited from

```ts
AbstractModuleInstance.useNewResolver
```

## Accessors

### queries

### Get Signature

```ts
get queries(): Schema[];
```

#### Returns

`Schema`[]

### Implementation of

```ts
CustomWitnessInstance.queries
```

### Overrides

```ts
AbstractModuleInstance.queries
```

***

### account

### Get Signature

```ts
get account(): AccountInstance;
```

#### Returns

`AccountInstance`

### Implementation of

```ts
CustomWitnessInstance.account
```

### Inherited from

```ts
AbstractModuleInstance.account
```

***

### additionalSigners

### Get Signature

```ts
get additionalSigners(): AccountInstance[];
```

#### Returns

`AccountInstance`[]

### Inherited from

```ts
AbstractModuleInstance.additionalSigners
```

***

### address

### Get Signature

```ts
get address(): Lowercase<string> & object & object;
```

#### Returns

`Lowercase`\<`string`\> & `object` & `object`

### Implementation of

```ts
CustomWitnessInstance.address
```

### Inherited from

```ts
AbstractModuleInstance.address
```

***

### allowAnonymous

### Get Signature

```ts
get allowAnonymous(): boolean;
```

#### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.allowAnonymous
```

***

### allowNameResolution

### Get Signature

```ts
get allowNameResolution(): boolean;
```

#### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.allowNameResolution
```

***

### archiving

### Get Signature

```ts
get archiving(): 
  | {
  archivists?: ModuleIdentifier[];
  queries?: Schema[];
}
  | undefined;
```

#### Returns

  \| \{
  `archivists?`: `ModuleIdentifier`[];
  `queries?`: `Schema`[];
\}
  \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.archiving
```

***

### archivist

### Get Signature

```ts
get archivist(): ModuleIdentifier | undefined;
```

#### Returns

`ModuleIdentifier` \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.archivist
```

***

### config

### Get Signature

```ts
get config(): TParams["config"] & object;
```

#### Returns

`TParams`\[`"config"`\] & `object`

### Implementation of

```ts
CustomWitnessInstance.config
```

### Inherited from

```ts
AbstractModuleInstance.config
```

***

### dead

### Get Signature

```ts
get dead(): boolean;
```

#### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.dead
```

***

### ephemeralQueryAccountEnabled

### Get Signature

```ts
get ephemeralQueryAccountEnabled(): boolean;
```

#### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.ephemeralQueryAccountEnabled
```

***

### globalReentrancyMutex

### Get Signature

```ts
get globalReentrancyMutex(): Mutex | undefined;
```

#### Returns

`Mutex` \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.globalReentrancyMutex
```

***

### id

### Get Signature

```ts
get id(): string;
```

The name (if specified) or address of the module

#### Returns

`string`

### Implementation of

```ts
CustomWitnessInstance.id
```

### Inherited from

```ts
AbstractModuleInstance.id
```

***

### logger

### Get Signature

```ts
get logger(): Logger | undefined;
```

#### Returns

`Logger` \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.logger
```

***

### priority

### Get Signature

```ts
get priority(): 2;
```

#### Returns

`2`

### Implementation of

```ts
CustomWitnessInstance.priority
```

### Inherited from

```ts
AbstractModuleInstance.priority
```

***

### reentrancy

### Get Signature

```ts
get reentrancy(): 
  | {
  action: "skip" | "wait";
  scope: "global";
}
  | undefined;
```

#### Returns

  \| \{
  `action`: `"skip"` \| `"wait"`;
  `scope`: `"global"`;
\}
  \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.reentrancy
```

***

### statusReporter

### Get Signature

```ts
get statusReporter(): 
  | ModuleStatusReporter & CreatableStatusReporter<void>
  | undefined;
```

The status reporter used to broadcast lifecycle changes.

#### Returns

  \| `ModuleStatusReporter` & `CreatableStatusReporter`\<`void`\>
  \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.statusReporter
```

***

### timestamp

### Get Signature

```ts
get timestamp(): boolean;
```

#### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.timestamp
```

***

### moduleConfigQueryValidator

### Get Signature

```ts
get protected moduleConfigQueryValidator(): Queryable;
```

#### Returns

`Queryable`

### Inherited from

```ts
AbstractModuleInstance.moduleConfigQueryValidator
```

***

### supportedQueryValidator

### Get Signature

```ts
get protected supportedQueryValidator(): Queryable;
```

#### Returns

`Queryable`

### Inherited from

```ts
AbstractModuleInstance.supportedQueryValidator
```

***

### downResolver

### Get Signature

```ts
get downResolver(): CompositeModuleResolver<CompositeModuleResolverParams>;
```

#### Returns

`CompositeModuleResolver`\<`CompositeModuleResolverParams`\>

### Inherited from

```ts
AbstractModuleInstance.downResolver
```

***

### modName

### Get Signature

```ts
get modName(): string | undefined;
```

#### Returns

`string` \| `undefined`

### Implementation of

```ts
CustomWitnessInstance.modName
```

### Inherited from

```ts
AbstractModuleInstance.modName
```

***

### moduleIdentifierTransformers

### Get Signature

```ts
get moduleIdentifierTransformers(): ModuleIdentifierTransformer[];
```

#### Returns

`ModuleIdentifierTransformer`[]

### Inherited from

```ts
AbstractModuleInstance.moduleIdentifierTransformers
```

***

### privateResolver

### Get Signature

```ts
get privateResolver(): CompositeModuleResolver<CompositeModuleResolverParams>;
```

#### Returns

`CompositeModuleResolver`\<`CompositeModuleResolverParams`\>

### Inherited from

```ts
AbstractModuleInstance.privateResolver
```

***

### root

### Get Signature

```ts
get root(): this;
```

#### Returns

`this`

### Inherited from

```ts
AbstractModuleInstance.root
```

***

### timeBudget

### Get Signature

```ts
get timeBudget(): number | undefined;
```

#### Returns

`number` \| `undefined`

### Inherited from

```ts
AbstractModuleInstance.timeBudget
```

***

### upResolver

### Get Signature

```ts
get upResolver(): CompositeModuleResolver<CompositeModuleResolverParams>;
```

#### Returns

`CompositeModuleResolver`\<`CompositeModuleResolverParams`\>

### Inherited from

```ts
AbstractModuleInstance.upResolver
```

## Methods

### getArchivistInstance()

```ts
getArchivistInstance(): Promise<
  | ArchivistInstance<ArchivistParams<AnyConfigSchema<ArchivistConfig>>, ArchivistModuleEventData, Payload>
| undefined>;
```

### Returns

`Promise`\<
  \| `ArchivistInstance`\<`ArchivistParams`\<`AnyConfigSchema`\<`ArchivistConfig`\>\>, `ArchivistModuleEventData`, `Payload`\>
  \| `undefined`\>

***

### observe()

```ts
observe(inPayloads?): Promise<WithoutPrivateStorageMeta<TOut>[]>;
```

**`Function`**

observe The main entry point for a witness.  Do not override this function.  Implement/override observeHandler for custom functionality

### Parameters

#### inPayloads?

`TIn`[]

### Returns

`Promise`\<`WithoutPrivateStorageMeta`\<`TOut`\>[]\>

### Implementation of

```ts
CustomWitnessInstance.observe
```

***

### observeQuery()

```ts
observeQuery(payloads?, account?): Promise<ModuleQueryResult<TOut>>;
```

### Parameters

#### payloads?

`TIn`[]

#### account?

`AccountInstance`

### Returns

`Promise`\<`ModuleQueryResult`\<`TOut`\>\>

### Implementation of

```ts
CustomWitnessInstance.observeQuery
```

***

### queryHandler()

```ts
protected queryHandler<T, TConfig>(
   query, 
   payloads?, 
queryConfig?): Promise<ModuleQueryHandlerResult>;
```

**`Function`**

queryHandler Calls observe for an observe query.  Override to support additional queries.

### Type Parameters

#### T

`T` *extends* `UnsignedQueryBoundWitness` = `UnsignedQueryBoundWitness`

#### TConfig

`TConfig` *extends* `ModuleConfig` = `ModuleConfig`

### Parameters

#### query

`T`

#### payloads?

`Payload`[]

#### queryConfig?

`TConfig`

### Returns

`Promise`\<`ModuleQueryHandlerResult`\>

### Overrides

```ts
AbstractModuleInstance.queryHandler
```

***

### observeHandler()

```ts
abstract protected observeHandler(payloads?): Promisable<TOut[]>;
```

**`Function`**

observeHandler Implement or override to add custom functionality to a witness

### Parameters

#### payloads?

`TIn`[]

### Returns

`Promisable`\<`TOut`[]\>

***

### \_getRootFunction()

```ts
static _getRootFunction(funcName): any;
```

### Parameters

#### funcName

`string`

### Returns

`any`

### Inherited from

```ts
AbstractModuleInstance._getRootFunction
```

***

### \_noOverride()

```ts
static _noOverride(functionName): void;
```

### Parameters

#### functionName

`string`

### Returns

`void`

### Inherited from

```ts
AbstractModuleInstance._noOverride
```

***

### createHandler()

```ts
static createHandler<T>(inInstance): Promise<T & AbstractModule<any, any>>;
```

Static hook called during creation to perform additional initialization.
Override in subclasses to customize post-construction setup.

### Type Parameters

#### T

`T` *extends* `CreatableInstance`\<`CreatableParams`, `EventData`\>

### Parameters

#### inInstance

`T`

### Returns

`Promise`\<`T` & `AbstractModule`\<`any`, `any`\>\>

The instance, potentially modified

### Inherited from

```ts
AbstractModuleInstance.createHandler
```

***

### determineAccount()

```ts
static determineAccount(params): Promise<AccountInstance>;
```

### Parameters

#### params

##### account?

`AccountInstance` \| `"random"`

##### accountPath?

`string`

##### wallet?

`WalletInstance`

### Returns

`Promise`\<`AccountInstance`\>

### Inherited from

```ts
AbstractModuleInstance.determineAccount
```

***

### factory()

```ts
static factory<TModule>(this, params?): CreatableModuleFactory<TModule>;
```

### Type Parameters

#### TModule

`TModule` *extends* `CreatableModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>

### Parameters

#### this

`CreatableModule`\<`TModule`\>

#### params?

`Partial`\<`TModule`\[`"params"`\]\>

### Returns

`CreatableModuleFactory`\<`TModule`\>

### Inherited from

```ts
AbstractModuleInstance.factory
```

***

### isAllowedSchema()

```ts
static isAllowedSchema(schema): boolean;
```

### Parameters

#### schema

`Schema`

### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.isAllowedSchema
```

***

### paramsHandler()

```ts
static paramsHandler<T>(inParams?): Promise<T["params"]>;
```

Static hook called during creation to validate and transform params.
Override in subclasses to add default values or validation.

### Type Parameters

#### T

`T` *extends* `AttachableModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>

### Parameters

#### inParams?

`Partial`\<`T`\[`"params"`\]\>

### Returns

`Promise`\<`T`\[`"params"`\]\>

The processed params ready for construction

### Inherited from

```ts
AbstractModuleInstance.paramsHandler
```

***

### \_getRootFunction()

```ts
_getRootFunction(funcName): any;
```

### Parameters

#### funcName

`string`

### Returns

`any`

### Inherited from

```ts
AbstractModuleInstance._getRootFunction
```

***

### busy()

```ts
busy<R>(closure): Promise<R>;
```

### Type Parameters

#### R

`R`

### Parameters

#### closure

() => `Promise`\<`R`\>

### Returns

`Promise`\<`R`\>

### Inherited from

```ts
AbstractModuleInstance.busy
```

***

### emit()

```ts
emit<TEventName, TEventArgs>(eventName, eventArgs): Promise<void>;
```

Emits an event, invoking all registered listeners concurrently.

### Type Parameters

#### TEventName

`TEventName` *extends* `string` \| `number` \| `symbol` = keyof `TEventData`

#### TEventArgs

`TEventArgs` *extends* `EventArgs` = `TEventData`\[`TEventName`\]

### Parameters

#### eventName

`TEventName`

The event to emit.

#### eventArgs

`TEventArgs`

The data to pass to listeners.

### Returns

`Promise`\<`void`\>

### Implementation of

```ts
CustomWitnessInstance.emit
```

### Inherited from

```ts
AbstractModuleInstance.emit
```

***

### isSupportedQuery()

```ts
isSupportedQuery(query, assert?): boolean;
```

### Parameters

#### query

`Schema`

#### assert?

`string` \| `boolean`

### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.isSupportedQuery
```

***

### previousHash()

```ts
previousHash(): Promisable<string | undefined>;
```

### Returns

`Promisable`\<`string` \| `undefined`\>

### Implementation of

```ts
CustomWitnessInstance.previousHash
```

### Inherited from

```ts
AbstractModuleInstance.previousHash
```

***

### query()

```ts
query<T, TConfig>(
   query, 
   payloads?, 
queryConfig?): Promise<ModuleQueryResult>;
```

### Type Parameters

#### T

`T` *extends* `UnsignedQueryBoundWitness` = `UnsignedQueryBoundWitness`

#### TConfig

`TConfig` *extends* `ModuleConfig` = `ModuleConfig`

### Parameters

#### query

`T`

#### payloads?

`Payload`[]

#### queryConfig?

`TConfig`

### Returns

`Promise`\<`ModuleQueryResult`\>

### Implementation of

```ts
CustomWitnessInstance.query
```

### Inherited from

```ts
AbstractModuleInstance.query
```

***

### queryable()

```ts
queryable<T, TConfig>(
   query, 
   payloads?, 
queryConfig?): Promise<boolean>;
```

### Type Parameters

#### T

`T` *extends* `UnsignedQueryBoundWitness` = `UnsignedQueryBoundWitness`

#### TConfig

`TConfig` *extends* `ModuleConfig` = `ModuleConfig`

### Parameters

#### query

`T`

#### payloads?

`Payload`[]

#### queryConfig?

`TConfig`

### Returns

`Promise`\<`boolean`\>

### Implementation of

```ts
CustomWitnessInstance.queryable
```

### Inherited from

```ts
AbstractModuleInstance.queryable
```

***

### \_checkDead()

```ts
protected _checkDead(): void;
```

### Returns

`void`

### Inherited from

```ts
AbstractModuleInstance._checkDead
```

***

### archivistInstance()

### Call Signature

```ts
protected archivistInstance(): Promise<
  | ArchivistInstance<ArchivistParams<AnyConfigSchema<ArchivistConfig>>, ArchivistModuleEventData, Payload>
| undefined>;
```

#### Returns

`Promise`\<
  \| `ArchivistInstance`\<`ArchivistParams`\<`AnyConfigSchema`\<`ArchivistConfig`\>\>, `ArchivistModuleEventData`, `Payload`\>
  \| `undefined`\>

#### Inherited from

```ts
AbstractModuleInstance.archivistInstance
```

### Call Signature

```ts
protected archivistInstance(required): Promise<ArchivistInstance<ArchivistParams<AnyConfigSchema<ArchivistConfig>>, ArchivistModuleEventData, Payload>>;
```

#### Parameters

##### required

`true`

#### Returns

`Promise`\<`ArchivistInstance`\<`ArchivistParams`\<`AnyConfigSchema`\<`ArchivistConfig`\>\>, `ArchivistModuleEventData`, `Payload`\>\>

#### Inherited from

```ts
AbstractModuleInstance.archivistInstance
```

***

### bindHashes()

```ts
protected bindHashes(
   hashes, 
   schema, 
account?): PromiseEx<unknown, AccountInstance>;
```

### Parameters

#### hashes

`BrandedHash`[]

#### schema

`Schema`[]

#### account?

`AccountInstance`

### Returns

`PromiseEx`\<`unknown`, `AccountInstance`\>

### Inherited from

```ts
AbstractModuleInstance.bindHashes
```

***

### bindHashesInternal()

```ts
protected bindHashesInternal(
   hashes, 
   schema, 
   account?): Promise<{
  schema: "network.xyo.boundwitness" & object;
  addresses: Lowercase<string> & object & object[];
  payload_hashes: BrandedHash[];
  payload_schemas: BrandedSchema<string>[];
  previous_hashes: (BrandedHash | null)[];
  $destination?: Lowercase<string> & object & object;
  $sourceQuery?: BrandedHash;
  $signatures: (BrandedHex | null)[];
}>;
```

### Parameters

#### hashes

`BrandedHash`[]

#### schema

`Schema`[]

#### account?

`AccountInstance`

### Returns

`Promise`\<\{
  `schema`: `"network.xyo.boundwitness"` & `object`;
  `addresses`: `Lowercase`\<`string`\> & `object` & `object`[];
  `payload_hashes`: `BrandedHash`[];
  `payload_schemas`: `BrandedSchema`\<`string`\>[];
  `previous_hashes`: (`BrandedHash` \| `null`)[];
  `$destination?`: `Lowercase`\<`string`\> & `object` & `object`;
  `$sourceQuery?`: `BrandedHash`;
  `$signatures`: (`BrandedHex` \| `null`)[];
\}\>

### Inherited from

```ts
AbstractModuleInstance.bindHashesInternal
```

***

### bindQuery()

```ts
protected bindQuery<T>(
   query, 
   payloads?, 
   account?, 
additionalSigners?): PromiseEx<[UnsignedQueryBoundWitness, Payload[], Payload[]], AccountInstance>;
```

### Type Parameters

#### T

`T` *extends* `Query`

### Parameters

#### query

`T`

#### payloads?

`Payload`[]

#### account?

`AccountInstance`

#### additionalSigners?

`AccountInstance`[]

### Returns

`PromiseEx`\<\[`UnsignedQueryBoundWitness`, `Payload`[], `Payload`[]\], `AccountInstance`\>

### Inherited from

```ts
AbstractModuleInstance.bindQuery
```

***

### bindQueryInternal()

```ts
protected bindQueryInternal<T>(
   query, 
   payloads?, 
   account?, 
additionalSigners?): Promise<[UnsignedQueryBoundWitness, Payload[], Payload[]]>;
```

### Type Parameters

#### T

`T` *extends* `Query`

### Parameters

#### query

`T`

#### payloads?

`Payload`[]

#### account?

`AccountInstance`

#### additionalSigners?

`AccountInstance`[]

### Returns

`Promise`\<\[`UnsignedQueryBoundWitness`, `Payload`[], `Payload`[]\]\>

### Inherited from

```ts
AbstractModuleInstance.bindQueryInternal
```

***

### bindQueryResult()

```ts
protected bindQueryResult<T>(
   query, 
   payloads, 
   additionalWitnesses?, 
errors?): Promise<ModuleQueryResult>;
```

### Type Parameters

#### T

`T` *extends* `Query`

### Parameters

#### query

`T`

#### payloads

`Payload`[]

#### additionalWitnesses?

`AccountInstance`[]

#### errors?

`ModuleError`[]

### Returns

`Promise`\<`ModuleQueryResult`\>

### Inherited from

```ts
AbstractModuleInstance.bindQueryResult
```

***

### generateConfigAndAddress()

```ts
protected generateConfigAndAddress(_maxDepth?): Promisable<Payload[]>;
```

### Parameters

#### \_maxDepth?

`number`

### Returns

`Promisable`\<`Payload`[]\>

### Inherited from

```ts
AbstractModuleInstance.generateConfigAndAddress
```

***

### generateDescribe()

```ts
protected generateDescribe(): Promise<ModuleDescriptionPayload>;
```

### Returns

`Promise`\<`ModuleDescriptionPayload`\>

### Inherited from

```ts
AbstractModuleInstance.generateDescribe
```

***

### ~~getArchivist()~~

```ts
protected getArchivist(): Promise<
  | ArchivistInstance<ArchivistParams<AnyConfigSchema<ArchivistConfig>>, ArchivistModuleEventData, Payload>
| undefined>;
```

### Returns

`Promise`\<
  \| `ArchivistInstance`\<`ArchivistParams`\<`AnyConfigSchema`\<`ArchivistConfig`\>\>, `ArchivistModuleEventData`, `Payload`\>
  \| `undefined`\>

### Deprecated

use archivistInstance() instead

### Inherited from

```ts
AbstractModuleInstance.getArchivist
```

***

### isAllowedArchivingQuery()

```ts
protected isAllowedArchivingQuery(schema): boolean;
```

### Parameters

#### schema

`Schema`

### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.isAllowedArchivingQuery
```

***

### moduleAddressHandler()

```ts
protected moduleAddressHandler(): Promisable<(AddressPayload | AddressPreviousHashPayload)[]>;
```

### Returns

`Promisable`\<(`AddressPayload` \| `AddressPreviousHashPayload`)[]\>

### Inherited from

```ts
AbstractModuleInstance.moduleAddressHandler
```

***

### stateHandler()

```ts
protected stateHandler(): Promise<Payload[]>;
```

### Returns

`Promise`\<`Payload`[]\>

### Inherited from

```ts
AbstractModuleInstance.stateHandler
```

***

### stopHandler()

```ts
protected stopHandler(): Promise<void>;
```

Override in subclasses to define stop behavior. Throw an error on failure.

### Returns

`Promise`\<`void`\>

### Inherited from

```ts
AbstractModuleInstance.stopHandler
```

***

### subscribeHandler()

```ts
protected subscribeHandler(): void;
```

### Returns

`void`

### Inherited from

```ts
AbstractModuleInstance.subscribeHandler
```

***

### validateConfig()

```ts
protected validateConfig(config?, parents?): boolean;
```

### Parameters

#### config?

`unknown`

#### parents?

`string`[]

### Returns

`boolean`

### Inherited from

```ts
AbstractModuleInstance.validateConfig
```

***

### addParent()

```ts
addParent(mod): void;
```

### Parameters

#### mod

`ModuleInstance`

### Returns

`void`

### Implementation of

```ts
CustomWitnessInstance.addParent
```

### Inherited from

```ts
AbstractModuleInstance.addParent
```

***

### certifyParents()

```ts
certifyParents(): Promise<Payload[]>;
```

### Returns

`Promise`\<`Payload`[]\>

### Inherited from

```ts
AbstractModuleInstance.certifyParents
```

***

### createHandler()

```ts
createHandler(): Promise<void>;
```

### Returns

`Promise`\<`void`\>

### Inherited from

```ts
AbstractModuleInstance.createHandler
```

***

### manifest()

```ts
manifest(maxDepth?): Promise<ModuleManifestPayload>;
```

### Parameters

#### maxDepth?

`number`

### Returns

`Promise`\<`ModuleManifestPayload`\>

### Implementation of

```ts
CustomWitnessInstance.manifest
```

### Inherited from

```ts
AbstractModuleInstance.manifest
```

***

### manifestQuery()

```ts
manifestQuery(account, maxDepth?): Promise<ModuleQueryResult<ModuleManifestPayload>>;
```

### Parameters

#### account

`AccountInstance`

#### maxDepth?

`number`

### Returns

`Promise`\<`ModuleQueryResult`\<`ModuleManifestPayload`\>\>

### Implementation of

```ts
CustomWitnessInstance.manifestQuery
```

### Inherited from

```ts
AbstractModuleInstance.manifestQuery
```

***

### moduleAddress()

```ts
moduleAddress(): Promise<(AddressPayload | AddressPreviousHashPayload)[]>;
```

### Returns

`Promise`\<(`AddressPayload` \| `AddressPreviousHashPayload`)[]\>

### Implementation of

```ts
CustomWitnessInstance.moduleAddress
```

### Inherited from

```ts
AbstractModuleInstance.moduleAddress
```

***

### parents()

```ts
parents(): Promisable<NodeInstance<NodeParams<AnyConfigSchema<NodeConfig>>, NodeModuleEventData>[]>;
```

### Returns

`Promisable`\<`NodeInstance`\<`NodeParams`\<`AnyConfigSchema`\<`NodeConfig`\>\>, `NodeModuleEventData`\>[]\>

### Implementation of

```ts
CustomWitnessInstance.parents
```

### Inherited from

```ts
AbstractModuleInstance.parents
```

***

### privateChildren()

```ts
privateChildren(): Promisable<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]>;
```

### Returns

`Promisable`\<`ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>[]\>

### Implementation of

```ts
CustomWitnessInstance.privateChildren
```

### Inherited from

```ts
AbstractModuleInstance.privateChildren
```

***

### publicChildren()

```ts
publicChildren(): Promisable<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]>;
```

### Returns

`Promisable`\<`ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>[]\>

### Implementation of

```ts
CustomWitnessInstance.publicChildren
```

### Inherited from

```ts
AbstractModuleInstance.publicChildren
```

***

### removeParent()

```ts
removeParent(address): void;
```

### Parameters

#### address

`BrandedAddress`

### Returns

`void`

### Implementation of

```ts
CustomWitnessInstance.removeParent
```

### Inherited from

```ts
AbstractModuleInstance.removeParent
```

***

### resolve()

### Call Signature

```ts
resolve(): Promise<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]>;
```

#### Returns

`Promise`\<`ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>[]\>

#### Implementation of

```ts
CustomWitnessInstance.resolve
```

#### Inherited from

```ts
AbstractModuleInstance.resolve
```

### Call Signature

```ts
resolve<T>(all, options?): Promise<T[]>;
```

#### Type Parameters

##### T

`T` *extends* `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\> = `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>

#### Parameters

##### all

`"*"`

##### options?

`ModuleFilterOptions`\<`T`\>

#### Returns

`Promise`\<`T`[]\>

#### Implementation of

```ts
CustomWitnessInstance.resolve
```

#### Inherited from

```ts
AbstractModuleInstance.resolve
```

### Call Signature

```ts
resolve<T>(id, options?): Promise<T | undefined>;
```

#### Type Parameters

##### T

`T` *extends* `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\> = `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>

#### Parameters

##### id

`ModuleIdentifier`

##### options?

`ModuleFilterOptions`\<`T`\>

#### Returns

`Promise`\<`T` \| `undefined`\>

#### Implementation of

```ts
CustomWitnessInstance.resolve
```

#### Inherited from

```ts
AbstractModuleInstance.resolve
```

***

### resolveIdentifier()

```ts
resolveIdentifier(id, options?): Promise<BrandedAddress | undefined>;
```

### Parameters

#### id

`ModuleIdentifier`

#### options?

`ObjectFilterOptions`\<`AnyObject`\>

### Returns

`Promise`\<`BrandedAddress` \| `undefined`\>

### Inherited from

```ts
AbstractModuleInstance.resolveIdentifier
```

***

### resolvePrivate()

### Call Signature

```ts
resolvePrivate<T>(all, options?): Promise<T[]>;
```

#### Type Parameters

##### T

`T` *extends* `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\> = `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>

#### Parameters

##### all

`"*"`

##### options?

`ModuleFilterOptions`\<`T`\>

#### Returns

`Promise`\<`T`[]\>

#### Implementation of

```ts
CustomWitnessInstance.resolvePrivate
```

#### Inherited from

```ts
AbstractModuleInstance.resolvePrivate
```

### Call Signature

```ts
resolvePrivate<T>(id, options?): Promise<T | undefined>;
```

#### Type Parameters

##### T

`T` *extends* `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\> = `ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>

#### Parameters

##### id

`ModuleIdentifier`

##### options?

`ModuleFilterOptions`\<`T`\>

#### Returns

`Promise`\<`T` \| `undefined`\>

#### Implementation of

```ts
CustomWitnessInstance.resolvePrivate
```

#### Inherited from

```ts
AbstractModuleInstance.resolvePrivate
```

***

### siblings()

```ts
siblings(): Promise<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]>;
```

### Returns

`Promise`\<`ModuleInstance`\<`QueryableModuleParams`\<`AnyConfigSchema`\<`ModuleConfig`\>\>, `ModuleEventData`\<`object`\>\>[]\>

### Implementation of

```ts
CustomWitnessInstance.siblings
```

### Inherited from

```ts
AbstractModuleInstance.siblings
```

***

### state()

```ts
state(): Promise<Payload[]>;
```

### Returns

`Promise`\<`Payload`[]\>

### Implementation of

```ts
CustomWitnessInstance.state
```

### Inherited from

```ts
AbstractModuleInstance.state
```

***

### stateQuery()

```ts
stateQuery(account): Promise<ModuleQueryResult>;
```

### Parameters

#### account

`AccountInstance`

### Returns

`Promise`\<`ModuleQueryResult`\>

### Implementation of

```ts
CustomWitnessInstance.stateQuery
```

### Inherited from

```ts
AbstractModuleInstance.stateQuery
```

***

### subscribe()

```ts
subscribe(_queryAccount?): void;
```

### Parameters

#### \_queryAccount?

`AccountInstance`

### Returns

`void`

### Inherited from

```ts
AbstractModuleInstance.subscribe
```

***

### manifestHandler()

```ts
protected manifestHandler(maxDepth?, _ignoreAddresses?): Promise<ModuleManifestPayload>;
```

### Parameters

#### maxDepth?

`number`

#### \_ignoreAddresses?

`BrandedAddress`[]

### Returns

`Promise`\<`ModuleManifestPayload`\>

### Inherited from

```ts
AbstractModuleInstance.manifestHandler
```

***

### resolveArchivingArchivists()

```ts
protected resolveArchivingArchivists(): Promise<ArchivistInstance<ArchivistParams<AnyConfigSchema<ArchivistConfig>>, ArchivistModuleEventData, Payload>[]>;
```

### Returns

`Promise`\<`ArchivistInstance`\<`ArchivistParams`\<`AnyConfigSchema`\<`ArchivistConfig`\>\>, `ArchivistModuleEventData`, `Payload`\>[]\>

### Inherited from

```ts
AbstractModuleInstance.resolveArchivingArchivists
```

***

### sendQuery()

```ts
protected sendQuery<T, P, R>(
   queryPayload, 
   payloads?, 
account?): Promise<R[]>;
```

### Type Parameters

#### T

`T` *extends* `Query`

#### P

`P` *extends* `Payload` = `Payload`

#### R

`R` *extends* `Payload` = `Payload`

### Parameters

#### queryPayload

`T`

#### payloads?

`P`[]

#### account?

`AccountInstance`

### Returns

`Promise`\<`R`[]\>

### Inherited from

```ts
AbstractModuleInstance.sendQuery
```

***

### sendQueryRaw()

```ts
protected sendQueryRaw<T, P, R>(
   queryPayload, 
   payloads?, 
account?): Promise<ModuleQueryResult<R>>;
```

### Type Parameters

#### T

`T` *extends* `Query`

#### P

`P` *extends* `Payload` = `Payload`

#### R

`R` *extends* `Payload` = `Payload`

### Parameters

#### queryPayload

`T`

#### payloads?

`P`[]

#### account?

`AccountInstance`

### Returns

`Promise`\<`ModuleQueryResult`\<`R`\>\>

### Inherited from

```ts
AbstractModuleInstance.sendQueryRaw
```

***

### startHandler()

```ts
protected startHandler(): Promise<void>;
```

### Returns

`Promise`\<`void`\>

### Inherited from

```ts
AbstractModuleInstance.startHandler
```

***

### storeToArchivists()

```ts
protected storeToArchivists(payloads): Promise<Payload[]>;
```

### Parameters

#### payloads

`Payload`[]

### Returns

`Promise`\<`Payload`[]\>

### Inherited from

```ts
AbstractModuleInstance.storeToArchivists
```


[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
[npm-badge]: https://img.shields.io/npm/v/@xyo-network/abstract-witness.svg
[npm-link]: https://www.npmjs.com/package/@xyo-network/abstract-witness
[license-badge]: https://img.shields.io/npm/l/@xyo-network/abstract-witness.svg
[license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE

---
_Source: https://npm.io/package/@xyo-network/abstract-witness · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
