import type { Signer } from "./signing/index"; import type { Buffer } from "buffer"; type ResolvesTo = T | Promise | ((...args: any[]) => Promise); export abstract class BundleItem { readonly signatureType: ResolvesTo; readonly rawSignature: ResolvesTo; readonly signature: ResolvesTo; readonly signatureLength: ResolvesTo; readonly rawOwner: ResolvesTo; readonly owner: ResolvesTo; readonly ownerLength: ResolvesTo; readonly rawTarget: ResolvesTo; readonly target: ResolvesTo; readonly rawAnchor: ResolvesTo; readonly anchor: ResolvesTo; readonly rawTags: ResolvesTo; readonly tags: ResolvesTo<{ name: string; value: string }[]>; readonly rawData: ResolvesTo; readonly data: ResolvesTo; abstract sign(signer: Signer): Promise; abstract isValid(): Promise; static async verify(..._: any[]): Promise { throw new Error("You must implement `verify`"); } }