{"_id":"@biological-sovereignty-protocol/sdk","_rev":"2-7d666ee0fe6b69677c3457018d030ad7","name":"@biological-sovereignty-protocol/sdk","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@biological-sovereignty-protocol/sdk","version":"1.0.0","keywords":["bsp","biological-sovereignty","longevity","health-data","biomarker","arweave","biohacking","protocol"],"author":{"name":"Ambrósio Institute"},"license":"Apache-2.0","_id":"@biological-sovereignty-protocol/sdk@1.0.0","maintainers":[{"name":"ambrosiocompany","email":"gestaoambrosio@outlook.com"}],"homepage":"https://biologicalsovereigntyprotocol.com/developers/sdk-reference","bugs":{"url":"https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript/issues"},"dist":{"shasum":"75ebd0d9639320a9750bfae9b1f1f8355ef3fbcd","tarball":"https://registry.npmjs.org/@biological-sovereignty-protocol/sdk/-/sdk-1.0.0.tgz","fileCount":51,"integrity":"sha512-E8yUNW+rIrlrNgxYMdNWW9oox6YQ9AwTFoOsC6qCICW1HuMSTwdAOAl7yEQ0mNKNC8HkWRJIqkKRLdZrx+pG4Q==","signatures":[{"sig":"MEYCIQCjQapYhCt0Ll/15pRjLhgDXHffez4hKM592Nv/P4qsKQIhAIOUeRFQaMgVpPVVRyJ7uU7TAbwTwsrzTuFOBQUIR6/p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157019},"jest":{"preset":"ts-jest","testMatch":["**/tests/**/*.test.ts"],"testEnvironment":"node","collectCoverageFrom":["src/**/*.ts"]},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"2907ef6b7a2cd67d2e2ce7665e76b67e91d822e7","scripts":{"lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","typecheck":"tsc --noEmit","test:watch":"jest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ambrosiocompany","email":"gestaoambrosio@outlook.com"},"repository":{"url":"git+https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript.git","type":"git"},"_npmVersion":"11.6.2","description":"Official TypeScript SDK for the Biological Sovereignty Protocol","directories":{},"_nodeVersion":"24.13.0","dependencies":{"tweetnacl":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.0","typescript":"^5.4.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1775606679035_0.7324135983226647","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@biological-sovereignty-protocol/sdk","version":"3.0.0","description":"Official TypeScript SDK for the Biological Sovereignty Protocol","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","test":"jest","test:watch":"jest --watch","lint":"eslint 'src/**/*.ts'","typecheck":"tsc --noEmit","docs":"typedoc src/index.ts --out docs","prepublishOnly":"npm run build"},"keywords":["bsp","biological-sovereignty","longevity","health-data","biomarker","aptos","biohacking","protocol"],"author":{"name":"Ambrósio Institute"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript.git"},"homepage":"https://biologicalsovereigntyprotocol.com/developers/sdk-reference","bugs":{"url":"https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript/issues"},"engines":{"node":">=18.0.0"},"peerDependencies":{"typescript":">=5.0.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","eslint":"^8.57.0","jest":"^29.7.0","ts-jest":"^29.1.0","typedoc":"^0.26.11","typescript":"^5.4.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","testMatch":["**/tests/**/*.test.ts"],"collectCoverageFrom":["src/**/*.ts"]},"dependencies":{"@aptos-labs/ts-sdk":"^6.3.1","tweetnacl":"^1.0.3"},"_id":"@biological-sovereignty-protocol/sdk@3.0.0","gitHead":"c489b1c0c7814d270403f000ad7d6dab74fabe2f","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-vSGSHRPeu7rs8w0aO6T7Qnd+FQwqt9VLoguyBb0sRI+VZo2E0CnvZgdBlEE76Z0bpFq/4+Ft/KcYDzi7G0s9KQ==","shasum":"7e8ee521beb3ffc9e2e8ff8aac2a04805da81c91","tarball":"https://registry.npmjs.org/@biological-sovereignty-protocol/sdk/-/sdk-3.0.0.tgz","fileCount":51,"unpackedSize":167246,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD4g2T0Bbt02g0eNNDpGmXIAPBTvzootiiGH6z7/zxfnwIhAIrcSCiHA++C11y7Qm2GbwuT6XTFWiRCxro0PBQgAJc6"}]},"_npmUser":{"name":"ambrosiocompany","email":"gestaoambrosio@outlook.com"},"directories":{},"maintainers":[{"name":"ambrosiocompany","email":"gestaoambrosio@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_3.0.0_1776703823151_0.22601874612664452"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-08T00:04:38.969Z","modified":"2026-04-20T16:50:23.440Z","1.0.0":"2026-04-08T00:04:39.184Z","3.0.0":"2026-04-20T16:50:23.304Z"},"bugs":{"url":"https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript/issues"},"author":{"name":"Ambrósio Institute"},"license":"Apache-2.0","homepage":"https://biologicalsovereigntyprotocol.com/developers/sdk-reference","keywords":["bsp","biological-sovereignty","longevity","health-data","biomarker","aptos","biohacking","protocol"],"repository":{"type":"git","url":"git+https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript.git"},"description":"Official TypeScript SDK for the Biological Sovereignty Protocol","maintainers":[{"name":"ambrosiocompany","email":"gestaoambrosio@outlook.com"}],"readme":"[![npm version](https://img.shields.io/npm/v/bsp-sdk.svg)](https://www.npmjs.com/package/bsp-sdk)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org)\n\n# bsp-sdk\n\nOfficial TypeScript SDK for the [Biological Sovereignty Protocol](https://biologicalsovereigntyprotocol.com) — giving individuals sovereign control over their biological data.\n\n---\n\n## Installation\n\n```bash\nnpm install bsp-sdk\n# or\nyarn add bsp-sdk\n# or\npnpm add bsp-sdk\n```\n\nRequires Node.js >= 18 and TypeScript >= 5.0.\n\n---\n\n## Quick Start\n\nMinimal working example: create a BEO, grant consent, and submit a biomarker record.\n\n```typescript\nimport { BEOClient, AccessManager, BioRecordBuilder, ExchangeClient } from 'bsp-sdk'\n\n// 1. Create a Biological Entity Object (the individual's sovereign identity)\nconst beoClient = new BEOClient()\nconst { beo, keyPair } = await beoClient.create({ domain: 'andre.bsp' })\n\n// 2. Grant consent to an institution (IEO)\nconst accessManager = new AccessManager({ beo, privateKey: keyPair.privateKey })\nconst token = await accessManager.grantConsent({\n  ieoId: 'my-lab.bsp',\n  scope: {\n    intents: ['SUBMIT_RECORD', 'READ_RECORDS'],\n    categories: ['METABOLIC'],\n    levels: ['STANDARD'],\n    period: null,\n    max_records: null,\n  },\n})\n\n// 3. Build a signed BioRecord\nconst record = new BioRecordBuilder()\n  .beoId(beo.beo_id)\n  .biomarker('BSP-GL-001')   // Fasting glucose\n  .value(94)\n  .unit('mg/dL')\n  .timestamp(new Date().toISOString())\n  .confidence(0.99)\n  .sign(keyPair.privateKey)\n  .build()\n\n// 4. Submit via an institution's ExchangeClient\nconst exchange = new ExchangeClient({ ieoId: 'my-lab.bsp', privateKey: labPrivateKey })\nconst result = await exchange.submit(record, token)\nconsole.log(result.aptos_txs) // permanent record on Aptos\n```\n\n---\n\n## API Reference\n\n### `BEOClient`\n\nManages Biological Entity Objects — the sovereign identity of a biological individual.\n\n```typescript\nimport { BEOClient } from 'bsp-sdk'\nconst client = new BEOClient()\n```\n\n| Method | Params | Returns | Description |\n|---|---|---|---|\n| `create(opts)` | `{ domain: string, guardians?: Guardian[] }` | `Promise<{ beo: BEO, keyPair: KeyPair }>` | Creates a new BEO and Ed25519 key pair |\n| `recover(seedPhrase)` | `seedPhrase: string` | `Promise<{ beo: BEO, keyPair: KeyPair }>` | Recovers BEO from a BIP39 seed phrase |\n| `rotateKey(beoId, oldKey, newKey)` | `string, Uint8Array, Uint8Array` | `Promise<BEO>` | Rotates the signing key and publishes updated BEO |\n| `lock(beoId, privateKey)` | `string, Uint8Array` | `Promise<BEO>` | Locks the BEO (freezes new record submissions) |\n| `unlock(beoId, privateKey)` | `string, Uint8Array` | `Promise<BEO>` | Unlocks a previously locked BEO |\n| `get(beoId)` | `string` | `Promise<BEO>` | Fetches a BEO by ID from the registry |\n\n---\n\n### `IEOClient` / `IEOBuilder`\n\nManages Institutional Entity Objects — the identity of labs, hospitals, platforms.\n\n```typescript\nimport { IEOBuilder } from 'bsp-sdk'\nconst builder = new IEOBuilder()\n```\n\n| Method | Params | Returns | Description |\n|---|---|---|---|\n| `createIEO(opts)` | `IEOCreateOptions` | `Promise<IEO>` | Registers a new institution on the protocol |\n| `rotateKey(ieoId, oldKey, newKey)` | `string, Uint8Array, Uint8Array` | `Promise<IEO>` | Rotates the institution's signing key |\n| `updateContacts(ieoId, contacts)` | `string, ContactInfo` | `Promise<IEO>` | Updates legal/contact metadata |\n| `get(ieoId)` | `string` | `Promise<IEO>` | Fetches an IEO by ID |\n\n`IEOCreateOptions`:\n\n```typescript\n{\n  domain: string          // e.g. 'my-lab.bsp'\n  display_name: string\n  ieo_type: IEOType       // 'LAB' | 'HOSPITAL' | 'WEARABLE' | 'PHYSICIAN' | 'INSURER' | 'RESEARCH' | 'PLATFORM'\n  country: string         // ISO 3166-1 alpha-2\n  jurisdiction: string\n  legal_id: string\n}\n```\n\n---\n\n### `BioRecordBuilder`\n\nFluent builder for constructing and signing BioRecords before submission.\n\n```typescript\nimport { BioRecordBuilder } from 'bsp-sdk'\n\nconst record = new BioRecordBuilder()\n  .beoId('uuid-of-beo')\n  .biomarker('BSP-GL-001')\n  .value(94)\n  .unit('mg/dL')\n  .category('METABOLIC')\n  .level('STANDARD')\n  .timestamp('2026-03-24T08:00:00Z')\n  .confidence(0.99)\n  .sign(privateKey)\n  .build()\n```\n\n| Method | Params | Returns | Description |\n|---|---|---|---|\n| `.beoId(id)` | `string` | `this` | Sets the BEO owner |\n| `.biomarker(code)` | `string` | `this` | BSP taxonomy code (e.g. `BSP-GL-001`) |\n| `.value(v)` | `number \\| string \\| object` | `this` | Measured value |\n| `.unit(u)` | `string` | `this` | Unit of measurement |\n| `.category(c)` | `string` | `this` | Biomarker category |\n| `.level(l)` | `BioLevel` | `this` | `'CORE' \\| 'STANDARD' \\| 'EXTENDED' \\| 'DEVICE'` |\n| `.timestamp(iso)` | `ISO8601` | `this` | Collection timestamp |\n| `.confidence(n)` | `number` | `this` | 0–1 confidence score |\n| `.refRange(r)` | `RangeObject` | `this` | Reference ranges |\n| `.sign(privateKey)` | `Uint8Array` | `this` | Signs the record with the IEO's private key |\n| `.build()` | — | `BioRecord` | Validates and returns the final record |\n\n---\n\n### `ExchangeClient`\n\nSubmits and queries biological records on behalf of an institution.\n\n```typescript\nimport { ExchangeClient } from 'bsp-sdk'\nconst exchange = new ExchangeClient({ ieoId: 'my-lab.bsp', privateKey })\n```\n\n| Method | Params | Returns | Description |\n|---|---|---|---|\n| `submit(record, token)` | `BioRecord, ConsentToken` | `Promise<SubmitResult>` | Submits a signed record; verifies consent before writing |\n| `query(beoId, token, filters?)` | `string, ConsentToken, ReadFilters?` | `Promise<ReadResult>` | Reads records for a BEO within consent scope |\n| `verify(recordId)` | `string` | `Promise<boolean>` | Verifies a record's hash against its Aptos transaction |\n\n---\n\n### `AccessManager`\n\nGrants, verifies, and revokes ConsentTokens on behalf of a BEO.\n\n```typescript\nimport { AccessManager } from 'bsp-sdk'\nconst manager = new AccessManager({ beo, privateKey })\n```\n\n| Method | Params | Returns | Description |\n|---|---|---|---|\n| `grantConsent(opts)` | `ConsentGrantOptions` | `Promise<ConsentToken>` | Creates and signs a ConsentToken |\n| `revokeToken(tokenId)` | `string` | `Promise<void>` | Revokes an active token immediately |\n| `verifyToken(token)` | `ConsentToken` | `Promise<boolean>` | Verifies token signature and checks revocation status |\n| `listTokens(beoId)` | `string` | `Promise<ConsentToken[]>` | Lists all active tokens for a BEO |\n\n---\n\n### `CryptoUtils`\n\nLow-level cryptographic primitives used internally. Exposed for advanced use cases.\n\n```typescript\nimport { CryptoUtils } from 'bsp-sdk'\n```\n\n| Method | Params | Returns | Description |\n|---|---|---|---|\n| `generateSeedPhrase()` | — | `string` | BIP39 24-word seed phrase |\n| `recoverKeyPair(seedPhrase)` | `string` | `KeyPair` | Deterministic Ed25519 key pair from seed |\n| `verifySignature(message, sig, publicKey)` | `Uint8Array, Uint8Array, Uint8Array` | `boolean` | Verifies an Ed25519 signature |\n| `generateKeyPair()` | — | `KeyPair` | Generates a fresh random key pair |\n| `splitSecret(secret, threshold, shares)` | `Uint8Array, number, number` | `Uint8Array[]` | Shamir Secret Sharing split |\n| `recoverSecret(shares)` | `Uint8Array[]` | `Uint8Array` | Shamir Secret Sharing recovery |\n\n---\n\n## Complete Flow Example\n\nBEO creation, consent grant, record submission, and read — end to end.\n\n```typescript\nimport {\n  BEOClient,\n  IEOBuilder,\n  AccessManager,\n  BioRecordBuilder,\n  ExchangeClient,\n  CryptoUtils,\n} from 'bsp-sdk'\n\n// ── 1. Institution setup (done once) ─────────────────────────────────────────\nconst ieoBuilder = new IEOBuilder()\nconst labKeyPair = CryptoUtils.generateKeyPair()\n\nconst lab = await ieoBuilder.createIEO({\n  domain: 'sunrise-lab.bsp',\n  display_name: 'Sunrise Diagnostics',\n  ieo_type: 'LAB',\n  country: 'BR',\n  jurisdiction: 'SP',\n  legal_id: 'CNPJ-12345678000195',\n})\n\n// ── 2. Individual creates their BEO ──────────────────────────────────────────\nconst beoClient = new BEOClient()\nconst seedPhrase = CryptoUtils.generateSeedPhrase()\nconst keyPair = CryptoUtils.recoverKeyPair(seedPhrase)\n\nconst { beo } = await beoClient.create({\n  domain: 'andre.bsp',\n  guardians: [\n    {\n      name: 'Maria',\n      contact: 'maria@example.com',\n      public_key: guardianPublicKey,\n      role: 'primary',\n      accepted: false,\n      added_at: new Date().toISOString(),\n    },\n  ],\n})\n\n// ── 3. Individual grants consent to the lab ──────────────────────────────────\nconst accessManager = new AccessManager({ beo, privateKey: keyPair.privateKey })\n\nconst token = await accessManager.grantConsent({\n  ieoId: lab.ieo_id,\n  scope: {\n    intents: ['SUBMIT_RECORD', 'READ_RECORDS'],\n    categories: ['METABOLIC', 'HORMONAL'],\n    levels: ['STANDARD', 'EXTENDED'],\n    period: { from: '2026-01-01T00:00:00Z', to: '2026-12-31T23:59:59Z' },\n    max_records: null,\n  },\n  expires_at: '2026-12-31T23:59:59Z',\n})\n\n// ── 4. Lab submits a record ───────────────────────────────────────────────────\nconst record = new BioRecordBuilder()\n  .beoId(beo.beo_id)\n  .biomarker('BSP-GL-001')\n  .value(94)\n  .unit('mg/dL')\n  .category('METABOLIC')\n  .level('STANDARD')\n  .timestamp(new Date().toISOString())\n  .confidence(0.99)\n  .refRange({\n    optimal: '70–85',\n    functional: '85–100',\n    deficiency: null,\n    toxicity: '> 126',\n    unit: 'mg/dL',\n  })\n  .sign(labKeyPair.privateKey)\n  .build()\n\nconst exchange = new ExchangeClient({ ieoId: lab.ieo_id, privateKey: labKeyPair.privateKey })\nconst submitResult = await exchange.submit(record, token)\nconsole.log('Aptos TX:', submitResult.aptos_txs[0])\n\n// ── 5. Lab queries back the records ──────────────────────────────────────────\nconst readResult = await exchange.query(beo.beo_id, token, {\n  categories: ['METABOLIC'],\n  limit: 50,\n})\nconsole.log(`Retrieved ${readResult.total} records`)\n\n// ── 6. Revoke consent when done ──────────────────────────────────────────────\nawait accessManager.revokeToken(token.token_id)\n```\n\n---\n\n## Error Handling\n\nAll SDK methods throw a `BSPError`-shaped object on failure. Always wrap calls in `try/catch`.\n\n```typescript\nimport type { BSPError } from 'bsp-sdk'\n\ntry {\n  const result = await exchange.submit(record, token)\n} catch (err) {\n  const bspErr = err as BSPError\n  console.error(`[${bspErr.code}] ${bspErr.message}`)\n  if (bspErr.retryable) {\n    // safe to retry with backoff\n  }\n}\n```\n\nCommon error codes:\n\n| Code | Retryable | Description |\n|---|---|---|\n| `CONSENT_EXPIRED` | No | ConsentToken has passed its `expires_at` |\n| `CONSENT_REVOKED` | No | Token was explicitly revoked by the BEO owner |\n| `SCOPE_VIOLATION` | No | Record category or intent is outside token scope |\n| `INVALID_SIGNATURE` | No | Record or token signature verification failed |\n| `BEO_LOCKED` | No | BEO is in LOCKED state; no writes allowed |\n| `IEO_SUSPENDED` | No | Institution's IEO has been suspended |\n| `REGISTRY_UNAVAILABLE` | Yes | BSP registry node is temporarily unreachable |\n| `APTOS_TIMEOUT` | Yes | Aptos transaction timed out; record is pending |\n| `INVALID_BIOMARKER` | No | BSP taxonomy code not found or malformed |\n\n---\n\n## Configuration\n\nConfigure via environment variables or by passing `BSPConfig` directly.\n\n```typescript\nimport { BSPClient } from 'bsp-sdk'\n\nconst client = new BSPClient({\n  ieo_domain: 'my-lab.bsp',\n  private_key: process.env.BSP_PRIVATE_KEY!,\n  environment: 'mainnet',          // 'mainnet' | 'testnet' | 'local'\n  registry_url: 'https://api.biologicalsovereigntyprotocol.com',\n  contract_address: '0x...your_contract_address',\n  aptos_network: 'mainnet',       // 'mainnet' | 'testnet' | 'devnet' | 'local'\n  timeout_ms: 30000,\n})\n```\n\n`.env.example`:\n\n```env\n# Required\nBSP_IEO_DOMAIN=my-lab.bsp\nBSP_PRIVATE_KEY=<hex-encoded Ed25519 private key>\nBSP_ENVIRONMENT=mainnet\n\n# Optional overrides\nBSP_REGISTRY_URL=https://api.biologicalsovereigntyprotocol.com\nBSP_CONTRACT_ADDRESS=0x...\nBSP_APTOS_NETWORK=mainnet\nBSP_TIMEOUT_MS=30000\n```\n\n---\n\n## TypeScript Types\n\nKey interfaces exported from `bsp-sdk`:\n\n```typescript\n// The sovereign identity of a biological individual\ninterface BEO {\n  beo_id: UUID\n  domain: string\n  public_key: string\n  created_at: ISO8601\n  version: SemVer\n  recovery: RecoveryConfig\n  status: 'ACTIVE' | 'LOCKED' | 'RECOVERY_PENDING'\n  locked_at: ISO8601 | null\n  aptos_tx?: AptosTxHash\n}\n\n// The identity of an institution\ninterface IEO {\n  ieo_id: UUID\n  domain: string\n  display_name: string\n  ieo_type: 'LAB' | 'HOSPITAL' | 'WEARABLE' | 'PHYSICIAN' | 'INSURER' | 'RESEARCH' | 'PLATFORM'\n  public_key: string\n  certification: IEOCertification\n  status: 'ACTIVE' | 'SUSPENDED' | 'REVOKED' | 'PENDING'\n}\n\n// Defines what an institution is allowed to do with a BEO's data\ninterface ConsentToken {\n  token_id: string\n  beo_id: UUID\n  ieo_id: UUID\n  granted_at: ISO8601\n  expires_at: ISO8601 | null\n  scope: TokenScope\n  revocable: boolean\n  revoked: boolean\n  owner_signature: string\n  token_hash: string\n}\n\n// What a token permits\ninterface TokenScope {\n  intents: BSPIntent[]      // 'SUBMIT_RECORD' | 'READ_RECORDS' | 'ANALYZE_VITALITY' | ...\n  categories: string[]\n  levels: BioLevel[]        // 'CORE' | 'STANDARD' | 'EXTENDED' | 'DEVICE'\n  period: { from: ISO8601 | null; to: ISO8601 | null } | null\n  max_records: number | null\n}\n\n// A single biological measurement\ninterface BioRecord {\n  record_id: UUID\n  beo_id: UUID\n  ieo_id: UUID\n  biomarker: string\n  value: number | string | Record<string, unknown>\n  unit: string\n  collected_at: ISO8601\n  source: SourceMeta\n  confidence?: number\n  status: 'ACTIVE' | 'SUPERSEDED' | 'PENDING'\n  aptos_tx?: AptosTxHash\n}\n```\n\n---\n\n## Contributing\n\nPull requests are welcome. Please open an issue first for any significant change.\n\n```bash\ngit clone https://github.com/Biological-Sovereignty-Protocol/bsp-sdk-typescript\ncd bsp-sdk-typescript\nnpm install\nnpm run build\nnpm test\n```\n\nLint: `npm run lint` | Type check: `npm run typecheck`\n\n---\n\n## License\n\nApache 2.0 — [Ambrósio Institute](https://ambrosioinstitute.org)\n\nProtocol specification: [bsp-spec](https://github.com/Biological-Sovereignty-Protocol/bsp-spec) | Docs: [biologicalsovereigntyprotocol.com/developers/sdk-reference](https://biologicalsovereigntyprotocol.com/developers/sdk-reference)\n","readmeFilename":"README.md"}