{
  "name": "social-types-protocol",
  "type": "registry:component",
  "dependencies": [
    "@bsv/sdk"
  ],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "components/social/types/protocol.ts",
      "type": "registry:component",
      "content": "// Protocol Types for Bitcoin Social Transactions\nimport type { PrivateKey, Script, Transaction } from \"@bsv/sdk\";\nimport type { ContentType, SocialActionType, SocialContext } from \"./social.js\";\n\n// Protocol Builder Configuration\nexport interface ProtocolConfig {\n\tapp: string; // App identifier (e.g., 'your-app.com')\n\tfeePerByte?: number;\n\tchangeAddress?: string;\n}\n\n// Transaction Builder Input\nexport interface SocialTransactionInput {\n\ttype: SocialActionType;\n\tcontent?: string;\n\tcontentType?: ContentType;\n\tcontext?: SocialContext;\n\tmetadata?: Record<string, string>;\n\tsigningKey: PrivateKey;\n\tconfig: ProtocolConfig;\n}\n\n// Protocol Data Arrays (raw format for blockchain)\nexport type ProtocolDataArray = string[];\n\n// B Protocol Builder\nexport interface BProtocolBuilder {\n\tcontent: string;\n\tcontentType: ContentType;\n\tencoding?: string;\n\tfilename?: string;\n}\n\n// MAP Protocol Builder\nexport interface MAPProtocolBuilder {\n\tapp: string;\n\ttype: SocialActionType;\n\tcontext?: SocialContext;\n\tmetadata?: Record<string, string>;\n}\n\n// AIP (Authentication & Identity Protocol) Builder\nexport interface AIPProtocolBuilder {\n\tdataToSign: ProtocolDataArray;\n\tsigningKey: PrivateKey;\n\taddress: string;\n}\n\n// Signed Protocol Data\nexport interface SignedProtocolData {\n\tdata: ProtocolDataArray;\n\tsignature: string;\n\taddress: string;\n\talgorithm: string;\n}\n\n// Transaction Build Result\nexport interface TransactionBuildResult {\n\ttransaction: Transaction;\n\tscript: Script;\n\tfee: number;\n\ttxid?: string; // After signing\n}\n\n// Broadcast Configuration\nexport interface BroadcastConfig {\n\tbroadcaster?: \"whatsonchain\" | \"gorillapool\" | \"taal\" | string;\n\ttimeout?: number;\n\tretries?: number;\n}\n\n// Re-export BroadcastResult from social types\nexport type { BroadcastResult } from \"./social.js\";\n\n// UTXO Interface (for transaction building)\nexport interface UTXO {\n\ttxid: string;\n\tvout: number;\n\tsatoshis: number;\n\tscript: string;\n\ttx?: Transaction;\n}\n\n// Transaction Output Configuration\nexport interface TransactionOutput {\n\tscript?: Script;\n\taddress?: string;\n\tsatoshis: number;\n}\n\n// Complete Transaction Configuration\nexport interface TransactionBuilderConfig {\n\toutputs: TransactionOutput[];\n\tutxos: UTXO[];\n\tchangeAddress: string;\n\tpaymentKey: PrivateKey;\n\tfeePerByte?: number;\n}\n\n// Protocol Constants Export\nexport const PROTOCOL_IDS = {\n\tB: \"19HxigV4QyBv3tHpQVcUEQyq1pzZVdoAut\",\n\tMAP: \"1PuQa7K62MiKCtssSLKy1kh56WWU7MtUR5\",\n\tBAP: \"1BAPSuaPnfGnSBM3GLV9yhxUdYe4vGbdMT\",\n\tAIP: \"15PciHG22SNLQJXMoSUaWVi7WSqc7hCfva\",\n\tPIPE: \"|\",\n} as const;\n\n// Default Configuration\nexport const DEFAULT_PROTOCOL_CONFIG: Partial<ProtocolConfig> = {\n\tfeePerByte: 0.5,\n} as const;\n\n// Content Type Mappings\nexport const CONTENT_TYPE_EXTENSIONS = {\n\t\"text/plain\": \".txt\",\n\t\"text/markdown\": \".md\",\n} as const;\n\n// Default File Names\nexport const DEFAULT_FILENAMES = {\n\t\"text/plain\": \"post.txt\",\n\t\"text/markdown\": \"post.md\",\n} as const;\n",
      "target": "<%- config.aliases.components %>/protocol.tsx"
    }
  ]
}