@ghostspeak/sdk 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/GhostSpeakClient-CyeZ6Tyb.d.ts +2061 -0
  4. package/dist/client.d.ts +4 -3
  5. package/dist/crypto.d.ts +2 -2
  6. package/dist/{feature-flags-CEaxXgQQ.d.ts → feature-flags-3POmoO_Z.d.ts} +833 -1190
  7. package/dist/index.d.ts +206 -4543
  8. package/dist/ipfs-types-KJcvy9Qk.d.ts +553 -0
  9. package/dist/minimal/core-minimal.d.ts +2037 -82
  10. package/dist/utils.d.ts +4 -4
  11. package/package.json +5 -29
  12. package/dist/EscrowInstructions-4P3H6ETO.js +0 -2
  13. package/dist/EscrowInstructions-4P3H6ETO.js.map +0 -1
  14. package/dist/GhostSpeakClient-4SROinEf.d.ts +0 -503
  15. package/dist/accounts-IUZMPYVE.js +0 -2
  16. package/dist/accounts-IUZMPYVE.js.map +0 -1
  17. package/dist/agent-GZ2OES75.js +0 -2
  18. package/dist/agent-GZ2OES75.js.map +0 -1
  19. package/dist/auctionMarketplace-W4YM7HKU.js +0 -2
  20. package/dist/auctionMarketplace-W4YM7HKU.js.map +0 -1
  21. package/dist/chunk-2KOOI5BX.js +0 -2
  22. package/dist/chunk-2KOOI5BX.js.map +0 -1
  23. package/dist/chunk-32GWTXRJ.js +0 -3
  24. package/dist/chunk-32GWTXRJ.js.map +0 -1
  25. package/dist/chunk-B4WUFVLE.js +0 -2
  26. package/dist/chunk-B4WUFVLE.js.map +0 -1
  27. package/dist/chunk-C2OTQ5YS.js +0 -2
  28. package/dist/chunk-C2OTQ5YS.js.map +0 -1
  29. package/dist/chunk-CTC4ZJ26.js +0 -5
  30. package/dist/chunk-CTC4ZJ26.js.map +0 -1
  31. package/dist/chunk-DF7LLAMH.js +0 -2
  32. package/dist/chunk-DF7LLAMH.js.map +0 -1
  33. package/dist/chunk-DJ356OUX.js +0 -2
  34. package/dist/chunk-DJ356OUX.js.map +0 -1
  35. package/dist/chunk-DK5YDBXR.js +0 -2
  36. package/dist/chunk-DK5YDBXR.js.map +0 -1
  37. package/dist/chunk-DOTF5ECA.js +0 -4
  38. package/dist/chunk-DOTF5ECA.js.map +0 -1
  39. package/dist/chunk-FKEUXXZS.js +0 -30
  40. package/dist/chunk-FKEUXXZS.js.map +0 -1
  41. package/dist/chunk-GSHXEKBW.js +0 -2
  42. package/dist/chunk-GSHXEKBW.js.map +0 -1
  43. package/dist/chunk-IZDAEOLH.js +0 -2
  44. package/dist/chunk-IZDAEOLH.js.map +0 -1
  45. package/dist/chunk-JY554RGE.js +0 -3
  46. package/dist/chunk-JY554RGE.js.map +0 -1
  47. package/dist/chunk-KK3HV2RD.js +0 -3
  48. package/dist/chunk-KK3HV2RD.js.map +0 -1
  49. package/dist/chunk-PPOCDM6G.js +0 -2
  50. package/dist/chunk-PPOCDM6G.js.map +0 -1
  51. package/dist/chunk-PUI35LBF.js +0 -2
  52. package/dist/chunk-PUI35LBF.js.map +0 -1
  53. package/dist/chunk-Q34J6YDA.js +0 -11
  54. package/dist/chunk-Q34J6YDA.js.map +0 -1
  55. package/dist/chunk-QATBFZMM.js +0 -3
  56. package/dist/chunk-QATBFZMM.js.map +0 -1
  57. package/dist/chunk-QTKN3VZV.js +0 -2
  58. package/dist/chunk-QTKN3VZV.js.map +0 -1
  59. package/dist/chunk-RFBYMTTN.js +0 -2
  60. package/dist/chunk-RFBYMTTN.js.map +0 -1
  61. package/dist/chunk-RJJPOLCK.js +0 -22
  62. package/dist/chunk-RJJPOLCK.js.map +0 -1
  63. package/dist/chunk-RTWJTEND.js +0 -2
  64. package/dist/chunk-RTWJTEND.js.map +0 -1
  65. package/dist/chunk-SR3ZJCME.js +0 -2
  66. package/dist/chunk-SR3ZJCME.js.map +0 -1
  67. package/dist/chunk-TAWXH7KX.js +0 -2
  68. package/dist/chunk-TAWXH7KX.js.map +0 -1
  69. package/dist/client.js +0 -2
  70. package/dist/client.js.map +0 -1
  71. package/dist/confidential-transfer-manager-CGS3T5DG.js +0 -2
  72. package/dist/confidential-transfer-manager-CGS3T5DG.js.map +0 -1
  73. package/dist/crypto.js +0 -2
  74. package/dist/crypto.js.map +0 -1
  75. package/dist/elgamal-3ABOJSHC.js +0 -2
  76. package/dist/elgamal-3ABOJSHC.js.map +0 -1
  77. package/dist/enhanced-client-errors-W22U3LNH.js +0 -2
  78. package/dist/enhanced-client-errors-W22U3LNH.js.map +0 -1
  79. package/dist/errors.js +0 -2
  80. package/dist/errors.js.map +0 -1
  81. package/dist/generated-U3L4KUE4.js +0 -2
  82. package/dist/generated-U3L4KUE4.js.map +0 -1
  83. package/dist/ghostspeak_wasm-3KPNJTSS.js +0 -2
  84. package/dist/ghostspeak_wasm-3KPNJTSS.js.map +0 -1
  85. package/dist/index.js +0 -97
  86. package/dist/index.js.map +0 -1
  87. package/dist/ipfs-types-BlxtJ3q2.d.ts +0 -194
  88. package/dist/metafile-esm.json +0 -1
  89. package/dist/minimal/core-minimal.js +0 -12
  90. package/dist/minimal/core-minimal.js.map +0 -1
  91. package/dist/pda-2GUWRQ5G.js +0 -2
  92. package/dist/pda-2GUWRQ5G.js.map +0 -1
  93. package/dist/registerAgentCompressed-L6ACXD2Z.js +0 -2
  94. package/dist/registerAgentCompressed-L6ACXD2Z.js.map +0 -1
  95. package/dist/token-2022-rpc-SRHRFN5Y.js +0 -2
  96. package/dist/token-2022-rpc-SRHRFN5Y.js.map +0 -1
  97. package/dist/types.js +0 -2
  98. package/dist/types.js.map +0 -1
  99. package/dist/utils.js +0 -2
  100. package/dist/utils.js.map +0 -1
  101. package/dist/zk-proof-builder-GXZ42QZA.js +0 -2
  102. package/dist/zk-proof-builder-GXZ42QZA.js.map +0 -1
package/dist/index.js DELETED
@@ -1,97 +0,0 @@
1
- import {a,b as b$2}from'./chunk-QATBFZMM.js';export{b as EscrowInstructions}from'./chunk-QATBFZMM.js';import {f,h}from'./chunk-CTC4ZJ26.js';export{i as AgentModule,c as BaseModule,k as ChannelModule,d as DEFAULT_IPFS_CONFIG,j as EscrowModule,l as GhostSpeakClient,e as IPFSUtils,b as InstructionBuilder,a as RpcClient,f as createIPFSUtils,h as createMetadataUri,o as default,g as determineStorageMethod,n as lamportsToSol,m as sol}from'./chunk-CTC4ZJ26.js';import'./chunk-DOTF5ECA.js';export{d as AccountNotFoundError,i as ErrorFactory,j as ErrorHandler,a as GhostSpeakError,c as InsufficientBalanceError,e as InvalidInputError,b as NetworkError,g as SimulationFailedError,h as TimeoutError,f as TransactionFailedError,k as ValidationError}from'./chunk-RJJPOLCK.js';export{a as AgentType,c as ChannelType,e as ErrorCode,b as EscrowStatus,d as MessageType,g as isError,f as isSuccess,h as unwrap}from'./chunk-IZDAEOLH.js';export{g as ZK_ELGAMAL_PROOF_PROGRAM_ID,h as createVerifyRangeProofInstruction,i as createVerifyTransferProofInstruction,c as decrypt,f as elgamal,b as encrypt,a as generateKeypair,d as generateTransferProof,e as generateWithdrawProof,l as isWasmAvailable,k as loadWasmModule,m as wasmBridge,j as zkProofs}from'./chunk-SR3ZJCME.js';import {b,c,d}from'./chunk-Q34J6YDA.js';export{c as createDiscriminatorErrorMessage,f as createMigrationPlan,h as createMigrationReport,q as deriveMultisigPda,r as deriveProposalPda,m as diagnoseAccountFromChain,n as diagnoseBatchFromChain,o as exportDiagnosticReport,g as extractLegacyData,j as getMigrationInstructions,e as inspectAccountData,k as runAccountDiagnostics,l as runBatchDiagnostics,d as safeDecodeAgent,i as simulateMigration,a as validateAccountDiscriminator}from'./chunk-Q34J6YDA.js';import {C as C$1,B as B$1,E as E$1,D,n as n$1,m,l,b as b$1,a as a$2}from'./chunk-32GWTXRJ.js';export{e as ASSOCIATED_TOKEN_PROGRAM_ADDRESS,f as NATIVE_MINT_ADDRESS,d as TOKEN_2022_PROGRAM_ADDRESS,c as TOKEN_PROGRAM_ADDRESS,O as TokenAccountState,h as TokenExtension,g as TokenProgram,R as basisPointsToPercentage,J as calculateCompoundInterest,I as calculateInterest,E as calculateRequiredAmountForNetTransfer,D as calculateTransferFee,P as canTransfer,L as createTransferHookInstruction,i as deriveAssociatedTokenAddress,j as deriveSplTokenAssociatedTokenAddress,k as deriveToken2022AssociatedTokenAddress,N as deserializeTokenMetadata,m as detectTokenProgram,F as estimateAccumulatedFees,U as estimateComputeUnits,T as formatBasisPoints,z as formatTokenAmount,G as generateConfidentialTransferProof,v as getAllAssociatedTokenAddresses,l as getAssociatedTokenAccount,t as getConfidentialTransferConfig,u as getInterestBearingConfig,Q as getRequiredExtensions,x as getTokenProgramAddress,y as getTokenProgramFromAddress,o as getTokenProgramType,s as getTransferFeeConfig,q as hasConfidentialTransferExtension,r as hasInterestBearingExtension,p as hasTransferFeeExtension,n as isToken2022Mint,A as parseTokenAmount,S as percentageToBasisPoints,M as serializeTokenMetadata,w as validateAssociatedTokenAddress,K as validateTransferHookInstruction,H as verifyConfidentialTransferProof}from'./chunk-32GWTXRJ.js';import {l as l$1,b as b$3,h as h$1}from'./chunk-JY554RGE.js';export{e as ClientEncryptionService,p as ConfidentialTransferManager,a as FeatureFlagManager,k as LocalStorageProvider,j as MockIPFSProvider,m as PrivateDataQuery,l as PrivateMetadataStorage,o as createPrivacyManifest,n as estimateStorageCost,f as generateLocalPrivacyProof,b as getFeatureFlags,c as isFeatureEnabled,h as prepareForZkMigration,g as verifyLocalPrivacyProof}from'./chunk-JY554RGE.js';import'./chunk-RFBYMTTN.js';import {i,q,s as s$2,r}from'./chunk-DK5YDBXR.js';export{i as deriveA2AMessagePda,h as deriveA2ASessionPda,a as deriveAgentPda,l as deriveAgentVerificationPda,d as deriveJobApplicationPda,c as deriveJobPostingPda,g as derivePaymentPda,b as deriveServiceListingPda,k as deriveServicePurchasePda,j as deriveUserRegistryPda,f as deriveWorkDeliveryPda,e as deriveWorkOrderPda,p as findProgramDerivedAddress}from'./chunk-DK5YDBXR.js';import {j,f as f$2}from'./chunk-PPOCDM6G.js';export{a as FEATURE_GATES,e as ProofMode,b as checkFeatureGate,d as clearFeatureGateCache,f as generateRangeProofWithCommitment,i as generateTransferProofWithInstruction,k as getZkProgramStatus,j as isZkProgramAvailable,c as isZkProgramEnabled}from'./chunk-PPOCDM6G.js';import'./chunk-C2OTQ5YS.js';import {a as a$3,b as b$4,c as c$1}from'./chunk-KK3HV2RD.js';export{c as IPFSClient}from'./chunk-KK3HV2RD.js';import {$i,Uk,$l,ud,A,Ac,wj,Zc,Mi,dc,X,s as s$1,ni,gm,Wa,Mj,Mk,Rc,$h,gi,Jf,uf,Cf,hk,Fj,tc,vg,Tg,Ga,Cd,Ek,ee,kb,Zd,cb,ql,lc,Tl,P,Rf,Zf,al,rb,$j,md,xk,pj}from'./chunk-QTKN3VZV.js';export{I as getAddMessageReactionInstruction,za as getCancelEscrowInstruction,Oa as getCompleteEscrowInstruction,Gb as getCreateEnhancedChannelInstructionAsync,Ob as getCreateEscrowInstructionAsync,Kd as getDisputeEscrowInstruction,ph as getJoinChannelInstruction,xh as getLeaveChannelInstruction,wi as getProcessPartialRefundInstruction,$i as getRegisterAgentInstructionAsync,Tj as getSendEnhancedMessageInstructionAsync,Fl as getUpdateChannelSettingsInstruction}from'./chunk-QTKN3VZV.js';import {Uf,Lb,Xf,Nf,W}from'./chunk-DF7LLAMH.js';export{Za as getChannelDecoder,Lb as getEscrowDecoder,ld as getMessageDecoder}from'./chunk-DF7LLAMH.js';import {t,s,f as f$1}from'./chunk-FKEUXXZS.js';export{o as GhostSpeakSDKError,n as INSTRUCTION_MAPPINGS,a as InstructionValidationError,d as createAccountMismatchError,t as createErrorContext,j as debugInstructionCall,i as enhanceErrorMessage,r as enhanceTransactionError,v as extractInstructionName,h as generateAccountValidationError,e as getAccountRequirements,g as getInstructionMapping,m as getPDAAccounts,k as getRequiredSigners,l as getWritableAccounts,b as isKnownInstruction,s as logEnhancedError,c as validateInstructionAccounts,u as validatePreconditions,p as withEnhancedErrors,q as withEnhancedErrorsSync}from'./chunk-FKEUXXZS.js';import {n,a as a$1}from'./chunk-TAWXH7KX.js';export{a as GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS}from'./chunk-TAWXH7KX.js';import'./chunk-RTWJTEND.js';import'./chunk-2KOOI5BX.js';export{d as getAgentDecoder}from'./chunk-GSHXEKBW.js';import'./chunk-PUI35LBF.js';import {Lo}from'./chunk-B4WUFVLE.js';export{fb as AuctionStatus,jb as AuctionType,ze as DisputeStatus,Uj as ProposalStatus}from'./chunk-B4WUFVLE.js';import'./chunk-DJ356OUX.js';import C from'bs58';import {createSolanaRpc,lamports,pipe,createTransactionMessage,setTransactionMessageFeePayer,setTransactionMessageLifetimeUsingBlockhash,appendTransactionMessageInstructions,signTransactionMessageWithSigners,getBase64EncodedWireTransaction,createKeyPairSignerFromBytes,generateKeyPairSigner,address as address$1,getBytesEncoder,getProgramDerivedAddress,getAddressEncoder}from'@solana/kit';import {Connection,PublicKey}from'@solana/web3.js';import {address}from'@solana/addresses';import {getTransferSolInstruction}from'@solana-program/system';import {promises}from'fs';import {sha256}from'@noble/hashes/sha256';import {bytesToHex}from'@noble/curves/abstract/utils';var gn=14,Pe=8;async function mn(c,e,t=a$1){let n=e.maxDepth??gn,i=e.canopyDepth??3,o=Math.ceil((Math.pow(2,i+1)-1)*32/8);let a={programAddress:"11111111111111111111111111111112"},{generateKeyPairSigner:d}=await import('@solana/signers'),u=await d(),{getProgramDerivedAddress:g}=await import('@solana/kit'),[m]=await g({programAddress:t,seeds:[getBytesEncoder().encode(new TextEncoder().encode("agent_tree_config")),getBytesEncoder().encode(new TextEncoder().encode(e.payer.address))]}),{createTransactionMessage:p,appendTransactionMessageInstructions:f,setTransactionMessageFeePayerSigner:b,setTransactionMessageLifetimeUsingBlockhash:h,signTransactionMessageWithSigners:A,pipe:y}=await import('@solana/kit'),R=104+o;await c.getMinimumBalanceForRentExemption(R).send();let x={programAddress:a.programAddress,accounts:[{address:e.payer.address,role:1},{address:u.address,role:3}],data:new Uint8Array([0,0,0,0,...new Uint8Array(8),...new Uint8Array(8),...new Uint8Array(32)])},Y=(await c.getLatestBlockhash().send()).value,Be=y(p({version:0}),I=>f([x],I),I=>b(e.payer,I),I=>h(Y,I)),Fe=await A(Be),W=await c.sendTransaction(Fe,{encoding:"base64",commitment:"confirmed"}).send();return await c.confirmTransaction({signature:W,blockhash:Y.blockhash,lastValidBlockHeight:Y.lastValidBlockHeight}).send(),console.log("\u2705 Compressed agent tree created:"),console.log(` Tree address: ${u.address}`),console.log(` Tree authority: ${m}`),console.log(` Max capacity: ${Math.pow(2,n)} agents`),console.log(` Canopy depth: ${i}`),console.log(` Signature: ${W}`),{treeAddress:u.address,treeAuthority:m,signature:W}}async function st(c,e,t,n,r=a$1){if(n.length===0)throw new Error("No agents provided for batch creation");if(n.length>Pe)throw new Error(`Batch size exceeds maximum of ${Pe}`);let {getProgramDerivedAddress:i}=await import('@solana/kit'),[s]=await i({programAddress:r,seeds:[getBytesEncoder().encode(new TextEncoder().encode("agent_tree_config")),getBytesEncoder().encode(new TextEncoder().encode(e.address))]}),[o]=await i({programAddress:r,seeds:[getBytesEncoder().encode(new TextEncoder().encode("user_registry")),getBytesEncoder().encode(new TextEncoder().encode(e.address))]});await W(c,s);let l=[],d=[],u=[];for(let f=0;f<n.length;f+=Pe)u.push(n.slice(f,f+Pe));for(let f of u){let b=[];for(let I of f){let{getRegisterAgentCompressedInstructionAsync:_n}=await import('./registerAgentCompressed-L6ACXD2Z.js'),Un=await _n({merkleTree:t,treeAuthority:s,userRegistry:o,signer:e,agentType:I.agentType,metadataUri:I.metadataUri,agentId:I.agentId},{programAddress:r});b.push(Un),d.push(I.agentId);}let A=(await c.getLatestBlockhash().send()).value,{createTransactionMessage:y,appendTransactionMessageInstructions:R,setTransactionMessageFeePayerSigner:k,setTransactionMessageLifetimeUsingBlockhash:x,signTransactionMessageWithSigners:At,pipe:Y}=await import('@solana/kit'),Be=Y(y({version:0}),I=>R(b,I),I=>k(e,I),I=>x(A,I)),Fe=await At(Be),W=await c.sendTransaction(Fe,{encoding:"base64",commitment:"confirmed"}).send();await c.confirmTransaction({signature:W,blockhash:A.blockhash,lastValidBlockHeight:A.lastValidBlockHeight}).send(),l.push(W),console.log(`\u2705 Batch of ${f.length} compressed agents created`),console.log(` Signature: ${W}`);}let g=n.length*.01,m=l.length*.001,p=Math.round(g/m);return console.log("\u{1F389} Batch creation complete!"),console.log(` Total agents created: ${d.length}`),console.log(` Transactions: ${l.length}`),console.log(` Cost reduction: ~${p}x`),console.log(` \u{1F4B0} Saved ~${(g-m).toFixed(3)} SOL`),{signatures:l,treeAuthority:s,merkleTree:t,agentIds:d,costReduction:p}}async function pn(c,e){let t=await W(c,e);if(!t.exists)throw new Error("Tree config not found");let n=Math.pow(2,gn),r=Number(t.data.numMinted),i=r/n*100;return {numMinted:r,capacity:n,utilizationPercent:i,treeCreator:t.data.treeCreator}}async function fn(c,e,t,n,r=a$1){let{fetchAgent:i}=await import('./agent-GZ2OES75.js'),s=await i(c,t);if(s.data.owner.toString()!==e.address.toString())throw new Error("Only the agent owner can migrate their agent");let o={owner:s.data.owner,agentId:`compressed_${t.toString().slice(0,8)}`,agentType:0,metadataUri:s.data.metadataUri,name:s.data.name,description:s.data.description,capabilities:s.data.capabilities,serviceEndpoint:s.data.serviceEndpoint,pricingModel:"Fixed"},a=await st(c,e,n,[o],r);return console.log("\u2705 Agent migrated to compressed format"),console.log(` Original: ${t}`),console.log(` Compressed ID: ${o.agentId}`),console.log(` Cost savings: ~${a.costReduction}x`),{signature:a.signatures[0],compressedAgentId:o.agentId}}function hn(c){let r=c*.01,i=.05+c*2e-6,s=r-i,o=s/r*100,a=r/i;return {regularCostSOL:r,compressedCostSOL:i,savingsSOL:s,savingsPercent:o,costReductionFactor:a}}var te=class extends a{ipfsUtils=null;constructor(e){super(e),e.ipfsConfig&&(this.ipfsUtils=f(e.ipfsConfig));}configureIPFS(e){this.ipfsUtils=f(e);}extractAgentIdFromMetadata(e){if(e?.startsWith("data:application/json"))try{let t=e.split(",")[1];if(!t)return;let n=JSON.parse(Buffer.from(t,"base64").toString());if(typeof n.agentId=="string")return n.agentId}catch{}}async register(e,t$1){let n=typeof t$1.agentType=="number"&&!isNaN(t$1.agentType)?t$1.agentType:1,r=256;if(t$1.metadataUri&&t$1.metadataUri.length>r)throw new Error(`Metadata URI exceeds maximum length of ${r} characters (got ${t$1.metadataUri.length})`);console.log("\u{1F50D} Debug - Agent registration params:"),console.log(` Signer address: ${e.address}`),console.log(` Agent ID: ${t$1.agentId}`),console.log(` Agent type: ${n}`),console.log(` Metadata URI: ${t$1.metadataUri.substring(0,50)}...`);try{let i=await this.findAgentPDA(e.address,t$1.agentId),s=await $i({agentAccount:i,signer:e,agentType:n,metadataUri:t$1.metadataUri,agentId:t$1.agentId},{programAddress:this.programId});return this.logInstructionDetails(s),await this.sendTransaction([s],[e])}catch(i){let s$1=t("registerAgent","register_agent",void 0,{agentType:n,agentId:t$1.agentId,metadataUri:t$1.metadataUri});throw s(i instanceof Error?i:new Error(String(i)),s$1),i}}async create(e,t){let n=t.agentId??`agent_${Date.now()}_${Math.floor(Math.random()*1e3)}`,i={"data-analysis":1,writing:2,coding:3,translation:4,"image-processing":5,automation:6,research:7,"customer-service":8,"financial-analysis":9,"content-moderation":10}[t.category]??1,s={name:t.name,description:t.description,capabilities:t.capabilities,serviceEndpoint:t.serviceEndpoint,agentId:n,createdAt:new Date().toISOString()},o;if(t.metadataUri)o=t.metadataUri;else {let d=t.ipfsConfig?f(t.ipfsConfig):this.ipfsUtils;try{o=await h(s,d??void 0,{type:"agent-metadata",filename:`agent-${n}.json`,forceIPFS:t.forceIPFS});let u=o.startsWith("ipfs://");console.log("\u{1F4DD} Agent metadata storage:"),console.log(` Storage method: ${u?"IPFS":"Inline"}`),console.log(` URI: ${o.substring(0,80)}${o.length>80?"...":""}`),u&&d&&(console.log(`\u{1F310} IPFS metadata stored successfully for agent ${n}`),console.log(" Full metadata preserved without compression"));}catch(u){console.warn("\u26A0\uFE0F IPFS storage failed, falling back to inline storage:",u instanceof Error?u.message:String(u));let g=JSON.stringify(s),p=`data:application/json;base64,${Buffer.from(g).toString("base64")}`,f=256;if(p.length>f){console.warn(`\u26A0\uFE0F Metadata size (${p.length} chars) exceeds safe limit (${f}). Compressing...`);let b=f/p.length,h=Math.floor(80*b),A={n:t.name.substring(0,Math.min(30,t.name.length)),d:t.description.substring(0,h),c:t.capabilities.slice(0,3).join(","),e:t.serviceEndpoint.substring(0,50),t:Math.floor(Date.now()/1e3),agentId:n},y=JSON.stringify(A);if(o=`data:application/json;base64,${Buffer.from(y).toString("base64")}`,o.length>f){A.d=A.d.substring(0,20)+"...";let k=JSON.stringify(A);o=`data:application/json;base64,${Buffer.from(k).toString("base64")}`;}console.log(`\u2705 Compressed metadata: ${p.length} \u2192 ${o.length} chars`);}else o=p;}}let a=await this.register(e,{agentType:i,metadataUri:o,agentId:n}),l=await this.findAgentPDA(e.address,n);return console.log("\u2705 Agent created successfully"),console.log(` Address: ${l}`),console.log(` Signature: ${a}`),l}async update(e,t,n,r){let i=await this.getAccount(t);if(!i)throw new Error("Agent not found");if(i.owner.toString()!==e.address.toString())throw new Error("You are not the owner of this agent");if(await this.findAgentPDA(e.address,n)!==t)throw new Error(`Invalid agent_id. The provided agent_id "${n}" does not match the agent address`);let o={};if(!r.metadataUri&&i.metadataUri.startsWith("data:application/json"))try{let g=i.metadataUri.split(",")[1]??"";o=JSON.parse(Buffer.from(g,"base64").toString());}catch{}let a;if(r.metadataUri)a=r.metadataUri;else {let g={...o,...r.description&&{description:r.description},...r.capabilities&&{capabilities:r.capabilities},...r.serviceEndpoint&&{serviceEndpoint:r.serviceEndpoint},agentId:n,updatedAt:new Date().toISOString()},m=JSON.stringify(g);a=`data:application/json;base64,${Buffer.from(m).toString("base64")}`;let f=800;if(a.length>f)throw console.warn(`\u26A0\uFE0F Metadata size (${a.length} chars) exceeds safe limit (${f})`),new Error("Metadata too large. Please use an external URI or reduce the content size")}let l=r.agentType??1;console.log("\u{1F504} Updating agent:"),console.log(` Address: ${t}`),console.log(` Agent ID: ${n}`),console.log(` Agent Type: ${l}`);let d=Uk({agentAccount:t,signer:e,agentType:l,metadataUri:a,agentId:n}),u=await this.sendTransaction([d],[e]);return console.log("\u2705 Agent updated successfully"),console.log(` Signature: ${u}`),u}async updateAgent(e,t,n){let r;if(n.agentId)r=n.agentId;else {let i=await this.getWithAgentId(t);if(i?.agentId)r=i.agentId,console.log(`\u2705 Retrieved agent_id from metadata: ${r}`);else {let s=await this.findAgentIdByAddress(e.address,t);if(s)r=s,console.log(`\u2705 Derived agent_id from address: ${r}`);else throw new Error("Could not determine agent_id. Please provide it explicitly in params.agentId or ensure it's stored in the agent metadata. You can find your agent_id from when you created the agent.")}}return this.update(e,t,r,n)}async findAgentIdByAddress(e,t){console.log("\u{1F50D} Attempting to find agent_id by address...");let n=await this.getAccount(t);if(n?.metadataUri){let s=this.extractAgentIdFromMetadata(n.metadataUri);if(s)return s}let r=Date.now(),i=r-1440*60*1e3;console.log("\u{1F50D} Searching for agent_id using timestamp patterns...");for(let s=r;s>i;s-=6e4)for(let o=0;o<1e3;o+=100){let a=`agent_${s}_${o}`;try{if(await this.findAgentPDA(e,a)===t)return a}catch{}}return console.warn("\u26A0\uFE0F Could not automatically determine agent_id"),console.log("\u{1F4A1} To avoid this in the future, always store the agent_id when creating agents"),null}async verify(e,t,n,r,i,s,o){let a=$l({agentVerification:t,agent:n,verifier:e,agentPubkey:r,serviceEndpoint:i,supportedCapabilities:s,verifiedAt:o});return this.sendTransaction([a],[e])}async deactivate(e,t,n){let r=await this.getAccount(t);if(!r)throw new Error("Agent not found");if(r.owner.toString()!==e.address.toString())throw new Error("You are not the owner of this agent");if(await this.findAgentPDA(e.address,n)!==t)throw new Error(`Invalid agent_id. The provided agent_id "${n}" does not match the agent address`);return this.executeInstruction(()=>ud({agentAccount:t,signer:e,agentId:n}),e,"agent deactivation")}async deactivateAgent(e,t,n){if(!n){let r=await this.getWithAgentId(t);if(r?.agentId)n=r.agentId,console.log(`\u2705 Retrieved agent_id from metadata: ${n}`);else {let i=await this.findAgentIdByAddress(e.address,t);if(i)n=i,console.log(`\u2705 Derived agent_id from address: ${n}`);else throw new Error("Could not determine agent_id. Please provide it explicitly or ensure it's stored in the agent metadata.")}}return this.deactivate(e,t,n)}async activate(e,t,n){let r=await this.getAccount(t);if(!r)throw new Error("Agent not found");if(r.owner.toString()!==e.address.toString())throw new Error("You are not the owner of this agent");if(await this.findAgentPDA(e.address,n)!==t)throw new Error(`Invalid agent_id. The provided agent_id "${n}" does not match the agent address`);return this.executeInstruction(()=>A({agentAccount:t,signer:e,agentId:n}),e,"agent activation")}async activateAgent(e,t,n){if(!n){let r=await this.getWithAgentId(t);if(r?.agentId)n=r.agentId,console.log(`\u2705 Retrieved agent_id from metadata: ${n}`);else {let i=await this.findAgentIdByAddress(e.address,t);if(i)n=i,console.log(`\u2705 Derived agent_id from address: ${n}`);else throw new Error("Could not determine agent_id. Please provide it explicitly or ensure it's stored in the agent metadata.")}}return this.activate(e,t,n)}async getAccount(e){try{return await this.getDecodedAccount(e,"getAgentDecoder")}catch(t){console.warn(`Standard Agent account decoding failed for ${e}:`,t instanceof Error?t.message:String(t));try{let{AGENT_DISCRIMINATOR:n,getAgentDecoder:r}=await import('./agent-GZ2OES75.js'),i=await b(this.rpc,e,s=>r().decode(s),n,"Agent");if(i.needsAttention){let s=c(i.validation,"Agent",e);console.warn(s);}return i.account}catch(n){return console.error(`Safe decode also failed for Agent ${e}:`,n instanceof Error?n.message:String(n)),null}}}async getAllAgents(e=100,t=0){try{let{AGENT_DISCRIMINATOR:n}=await import('./generated-U3L4KUE4.js'),r=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(n))}}];return (await this.getDecodedProgramAccounts("getAgentDecoder",r)).slice(t,t+e).map(({data:o})=>o)}catch(n){return console.warn("Standard getAllAgents failed, attempting recovery:",n),console.error("getAllAgents failed, this likely indicates discriminator mismatch issues"),console.error("Consider running: ghost diagnose agents --verbose"),[]}}async searchByCapabilities(e){let{AGENT_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}}];return (await this.getDecodedProgramAccounts("getAgentDecoder",n)).filter(({data:i})=>e.some(s=>i.capabilities.includes(s))).map(({address:i,data:s})=>({address:i,data:s}))}async list(e={}){try{let{AGENT_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}}];return (await this.getDecodedProgramAccounts("getAgentDecoder",n)).slice(e.offset??0,(e.offset??0)+(e.limit??100)).map(({address:s,data:o})=>({address:s,data:o}))}catch(t){console.warn("Standard list failed, attempting recovery with safe decoding:",t);try{let n=await this.getAllProgramAccounts(),r=[];for(let s of n){let o=await d({address:s.address,data:new Uint8Array(s.data)});o&&"exists"in o&&o.exists&&o.data?r.push({address:s.address,data:o.data}):console.log(`Skipping invalid account ${s.address}`);}let i=r.slice(e.offset??0,(e.offset??0)+(e.limit??100));return console.log(`Recovered ${r.length} valid agents, returning ${i.length} after pagination`),i}catch(n){return console.error("Both standard and fallback list failed:",n),[]}}}async search(e){return this.searchByCapabilities(e.capabilities)}async findAgentPDA(e,t){let{deriveAgentPda:n}=await import('./pda-2GUWRQ5G.js');return n(this.programId,e,t)}async findReplicationTemplatePDA(e){let{deriveReplicationTemplatePda:t}=await import('./pda-2GUWRQ5G.js');return t(this.programId,e)}async findReplicationRecordPDA(e,t){let{deriveReplicationRecordPda:n}=await import('./pda-2GUWRQ5G.js');return n(this.programId,e,t)}async findAgentTreeConfigPDA(e){let{deriveAgentTreeConfigPda:t}=await import('./pda-2GUWRQ5G.js');return t(this.programId,e)}async get(e){return this.getAccount(e)}async getWithAgentId(e){let t=await this.getAccount(e);if(!t)return null;let n=this.extractAgentIdFromMetadata(t.metadataUri);return {agent:t,agentId:n}}async getAgentMetadata(e){if(!e.metadataUri)return null;try{if(this.ipfsUtils&&e.metadataUri.startsWith("ipfs://"))return await this.ipfsUtils.retrieveAgentMetadata(e.metadataUri);if(e.metadataUri.startsWith("data:application/json")){let t=e.metadataUri.split(",")[1];if(!t)return null;let n=Buffer.from(t,"base64").toString(),r=JSON.parse(n);return "n"in r?{name:r.n,description:r.d,capabilities:typeof r.c=="string"?r.c.split(","):r.c,serviceEndpoint:r.e,agentId:r.agentId,createdAt:r.t?new Date(Number(r.t)*1e3).toISOString():void 0}:r}}catch(t){console.warn("Failed to parse agent metadata:",t instanceof Error?t.message:String(t));}return null}async getAgentWithMetadata(e){let t=await this.getAccount(e);if(!t)return null;let n=await this.getAgentMetadata(t);return {agent:t,metadata:n}}async listByOwner(e){return (await this.getDecodedProgramAccounts("getAgentDecoder")).filter(({data:n})=>n.owner.toString()===e.owner.toString()).map(({address:n,data:r})=>({address:n,data:r}))}async isAdmin(e){return e.toString()==="GssMyhkQPePLzByJsJadbQePZc6GtzGi22aQqW5opvUX"}async getUnverifiedAgents(){return (await this.getDecodedProgramAccounts("getAgentDecoder")).filter(({data:t})=>!t.isVerified).map(({address:t,data:n})=>({address:t,data:n}))}async rejectVerification(e,t,n,r){if(!await this.getAccount(t))throw new Error("Agent not found");let s=JSON.stringify({status:"rejected",reason:r.reason,rejectedAt:Date.now(),rejectedBy:e.address,agentId:n});return this.update(e,t,n,{metadataUri:`data:application/json;base64,${Buffer.from(s).toString("base64")}`})}async requestAdditionalInfo(e,t,n,r){if(!await this.getAccount(t))throw new Error("Agent not found");let s=JSON.stringify({status:"pending_info",request:r.request,requestedAt:Date.now(),requestedBy:e.address,agentId:n});return this.update(e,t,n,{metadataUri:`data:application/json;base64,${Buffer.from(s).toString("base64")}`})}async getPlatformAnalytics(){let e=await this.getMarketAnalytics(),t=await this.getAllAgents(),n=t.filter(i=>i.isVerified).length,r=t.filter(i=>i.isActive).length;if(e)return {totalEarnings:Number(e.totalVolume),jobsCompleted:Number(e.totalTransactions),successRate:95,averageRating:4.5,totalTransactions:Number(e.totalTransactions),uniqueClients:Math.floor(Number(e.totalTransactions)*.7),totalVolume:e.totalVolume,activeAgents:e.activeAgents,totalJobs:Number(e.totalTransactions),totalAgents:t.length,verifiedAgents:n,jobsByCategory:{},earningsTrend:[],topClients:[],topCategories:["Development","Design","Marketing"],topPerformers:e.topAgents.slice(0,5).map(i=>({agent:i.toString(),earnings:0})),growthMetrics:{weeklyGrowth:e.demandTrend,monthlyGrowth:e.supplyTrend,userGrowth:30,revenueGrowth:50},insights:[`${n} of ${t.length} agents are verified`,`${r} agents are currently active`,`Market cap: ${e.marketCap}`,`Price volatility: ${e.priceVolatility}%`]};{let i=t.reduce((o,a)=>o+Number(a.totalEarnings),0),s=t.reduce((o,a)=>o+a.totalJobsCompleted,0);return {totalEarnings:i,jobsCompleted:s,successRate:95,averageRating:4.5,totalTransactions:s*2,uniqueClients:Math.floor(s*.7),totalVolume:BigInt(i),activeAgents:r,totalJobs:s,totalAgents:t.length,verifiedAgents:n,jobsByCategory:{},earningsTrend:[],topClients:[],topCategories:["Development","Design","Marketing"],topPerformers:t.sort((o,a)=>Number(a.totalEarnings)-Number(o.totalEarnings)).slice(0,5).map(o=>({agent:o.owner.toString(),earnings:Number(o.totalEarnings)})),growthMetrics:{weeklyGrowth:15,monthlyGrowth:45,userGrowth:30,revenueGrowth:50},insights:[`${n} of ${t.length} agents are verified`,`${r} agents are currently active`,`Total platform volume: ${i}`]}}}async getStatus(e){let t=await this.getAccount(e.agentAddress);if(!t)throw new Error("Agent not found");return {jobsCompleted:t.totalJobsCompleted,totalEarnings:t.totalEarnings,successRate:t.reputationScore,lastActive:t.isActive?BigInt(Date.now()):null,currentJob:null}}async getAgentWorkOrders(e){try{let{WORK_ORDER_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}},{memcmp:{offset:40,bytes:C.encode(Buffer.from(e))}}];return await this.getDecodedProgramAccounts("getWorkOrderDecoder",n)}catch(t){return console.warn("Failed to fetch agent work orders:",t),[]}}async getAgentPayments(e){try{let{PAYMENT_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}},{memcmp:{offset:72,bytes:C.encode(Buffer.from(e))}}];return await this.getDecodedProgramAccounts("getPaymentDecoder",n)}catch(t){return console.warn("Failed to fetch agent payments:",t),[]}}async getAgentServicePurchases(e){try{let{SERVICE_PURCHASE_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}},{memcmp:{offset:40,bytes:C.encode(Buffer.from(e))}}];return await this.getDecodedProgramAccounts("getServicePurchaseDecoder",n)}catch(t){return console.warn("Failed to fetch agent service purchases:",t),[]}}calculateMonthlyEarnings(e){let t=new Map;for(let{data:n}of e){let r=new Date(Number(n.paidAt)*1e3),i=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}`,s=t.get(i)??0n;t.set(i,s+n.amount);}return Array.from(t.entries()).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>({month:n,earnings:r}))}async calculateCompletionByCategory(e,t){let n=new Map;for(let r of t)n.set(r,{completed:0,total:0});for(let{data:r}of e){let i=t.find(a=>r.title.toLowerCase().includes(a.toLowerCase())||r.description.toLowerCase().includes(a.toLowerCase()))??"Other",s=n.get(i)??{completed:0,total:0};s.total++;let{WorkOrderStatus:o}=await import('./generated-U3L4KUE4.js');(r.status===o.Completed||r.status===o.Approved)&&s.completed++,n.set(i,s);}return n}async getAnalytics(e){console.log(`\u{1F4CA} Getting analytics for agent ${e}...`);let t=await this.getAccount(e);if(!t)throw new Error("Agent not found");let n=await this.getAgentWorkOrders(e),r=await this.getAgentPayments(e),i=await this.getAgentServicePurchases(e),{WorkOrderStatus:s}=await import('./generated-U3L4KUE4.js'),o=n.filter(y=>y.data.status===s.Completed||y.data.status===s.Approved).length,a=n.filter(y=>y.data.status===s.InProgress||y.data.status===s.Open).length,l=n.length,d=l>0?o/l*100:0,u=r.reduce((y,R)=>y+R.data.amount,0n),g=n.filter(y=>y.data.status===s.InProgress||y.data.status===s.Open).reduce((y,R)=>y+R.data.paymentAmount,0n),m=[...n.map(y=>Number(y.data.updatedAt)),...r.map(y=>Number(y.data.paidAt)),...i.map(y=>Number(y.data.updatedAt))].filter(y=>y>0),p=m.length>0?Math.max(...m):Number(t.updatedAt),f=this.calculateMonthlyEarnings(r),b=await this.calculateCompletionByCategory(n,t.capabilities),h=t.reputationScore/20,A={totalJobsCompleted:o,totalEarnings:u,successRate:d,averageRating:h,activeJobs:a,pendingEarnings:g,lastActivityDate:new Date(p*1e3),reputationScore:t.reputationScore,monthlyEarnings:f,completionByCategory:b,clientSatisfaction:new Map};return console.log("\u2705 Analytics calculated from on-chain data"),A}async getMarketAnalytics(e,t){try{let n=e??new Date(new Date().getFullYear(),new Date().getMonth(),1),r=t??new Date,{MARKET_ANALYTICS_DISCRIMINATOR:i}=await import('./generated-U3L4KUE4.js'),s=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(i))}}];return (await this.getDecodedProgramAccounts("getMarketAnalyticsDecoder",s)).find(({data:l})=>{let d=new Date(Number(l.periodStart)*1e3),u=new Date(Number(l.periodEnd)*1e3);return d<=n&&u>=r})?.data??null}catch(n){return console.warn("Failed to fetch market analytics:",n),null}}async getAnalyticsDashboard(e){try{let{ANALYTICS_DASHBOARD_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}},{memcmp:{offset:16,bytes:C.encode(Buffer.from(e))}}],r=await this.getDecodedProgramAccounts("getAnalyticsDashboardDecoder",n);return r.length>0?r.sort((i,s)=>Number(s.data.updatedAt)-Number(i.data.updatedAt))[0].data:null}catch(t){return console.warn("Failed to fetch analytics dashboard:",t),null}}async createReplicationTemplate(e,t$1){console.log("\u{1F9EC} Creating replication template..."),console.log(` Source agent: ${t$1.sourceAgent}`),console.log(` Genome hash: ${t$1.genomeHash}`),console.log(` Replication fee: ${t$1.replicationFee}`),console.log(` Max replications: ${t$1.maxReplications}`);try{let n=await Ac({sourceAgent:t$1.sourceAgent,creator:e,genomeHash:t$1.genomeHash,baseCapabilities:t$1.baseCapabilities,replicationFee:t$1.replicationFee,maxReplications:t$1.maxReplications},{programAddress:this.programId}),r=await this.sendTransaction([n],[e]);return console.log("\u2705 Replication template created successfully"),console.log(` Signature: ${r}`),r}catch(n){let r=t("createReplicationTemplate","create_replication_template",void 0,{sourceAgent:t$1.sourceAgent,genomeHash:t$1.genomeHash});throw s(n instanceof Error?n:new Error(String(n)),r),n}}async replicateAgent(e,t$1){console.log("\u{1F52C} Replicating agent from template..."),console.log(` Template: ${t$1.replicationTemplate}`),console.log(` Name: ${t$1.name}`),console.log(` Additional capabilities: ${t$1.additionalCapabilities?.join(", ")??"none"}`);try{let n=await this.findAgentPDA(e.address,`replicated_${Date.now()}`),r=await this.findReplicationRecordPDA(t$1.replicationTemplate,e.address),i=await wj({replicationTemplate:t$1.replicationTemplate,newAgent:n,replicationRecord:r,buyer:e,customization:{name:t$1.name,description:t$1.description??null,additionalCapabilities:t$1.additionalCapabilities??[],pricingModel:t$1.pricingModel,isReplicable:t$1.isReplicable??!0,replicationFee:t$1.replicationFee??null},royaltyPercentage:1e3},{programAddress:this.programId}),s=await this.sendTransaction([i],[e]);return console.log("\u2705 Agent replicated successfully"),console.log(` New agent address: ${n}`),console.log(` Replication record: ${r}`),console.log(` Signature: ${s}`),{signature:s,newAgentAddress:n,replicationRecordAddress:r}}catch(n){let r=t("replicateAgent","replicate_agent",void 0,{template:t$1.replicationTemplate,name:t$1.name});throw s(n instanceof Error?n:new Error(String(n)),r),n}}async createCompressedAgent(e,t$1){console.log("\u{1F5DC}\uFE0F Creating compressed agent with ZK compression..."),console.log(` Agent ID: ${t$1.agentId}`),console.log(` Merkle tree: ${t$1.merkleTree}`),console.log(` Agent type: ${t$1.agentType}`),console.log(" \u{1F4B0} Cost reduction: ~5000x vs regular agent creation");try{let n$1=await this.findAgentTreeConfigPDA(e.address),{deriveUserRegistryPda:r}=await import('./pda-2GUWRQ5G.js'),i=await r(this.programId,e.address),s=await n({merkleTree:t$1.merkleTree,treeAuthority:n$1,userRegistry:i,signer:e,agentType:t$1.agentType,metadataUri:t$1.metadataUri,agentId:t$1.agentId},{programAddress:this.programId}),o=await this.sendTransaction([s],[e]);return console.log("\u2705 Compressed agent created successfully"),console.log(` Tree authority: ${n$1}`),console.log(` User registry: ${i}`),console.log(` Signature: ${o}`),console.log(" \u{1F389} Agent created with massive cost savings using ZK compression!"),{signature:o,treeAuthority:n$1,userRegistry:i}}catch(n){let r=t("createCompressedAgent","register_agent_compressed",void 0,{agentId:t$1.agentId,merkleTree:t$1.merkleTree});throw s(n instanceof Error?n:new Error(String(n)),r),n}}async createCompressedAgentWithMetadata(e,t){let n=t.agentId??`compressed_agent_${Date.now()}_${Math.floor(Math.random()*1e3)}`,i={"data-analysis":1,writing:2,coding:3,translation:4,"image-processing":5,automation:6,research:7,"customer-service":8,"financial-analysis":9,"content-moderation":10}[t.category]??1,s={name:t.name,description:t.description,capabilities:t.capabilities,serviceEndpoint:t.serviceEndpoint,agentId:n,createdAt:new Date().toISOString(),compressed:true},o,a=t.ipfsConfig?f(t.ipfsConfig):this.ipfsUtils;try{o=await h(s,a??void 0,{type:"agent-metadata",filename:`compressed-agent-${n}.json`,forceIPFS:t.forceIPFS}),console.log("\u{1F4DD} Compressed agent metadata created:"),console.log(` Storage: ${o.startsWith("ipfs://")?"IPFS":"Inline"}`),console.log(` URI: ${o.substring(0,80)}${o.length>80?"...":""}`);}catch(d){console.warn("\u26A0\uFE0F IPFS failed, using inline storage:",d instanceof Error?d.message:String(d));let u=JSON.stringify({n:t.name.substring(0,30),d:t.description.substring(0,100),c:t.capabilities.slice(0,5).join(","),e:t.serviceEndpoint.substring(0,50),t:Math.floor(Date.now()/1e3),agentId:n,compressed:true});o=`data:application/json;base64,${Buffer.from(u).toString("base64")}`;}return {...await this.createCompressedAgent(e,{merkleTree:t.merkleTree,agentType:i,metadataUri:o,agentId:n}),agentId:n}}async getReplicationTemplate(e){try{return await this.getDecodedAccount(e,"getReplicationTemplateDecoder")}catch(t){return console.warn(`Failed to get replication template ${e}:`,t),null}}async getReplicationRecord(e){try{return await this.getDecodedAccount(e,"getReplicationRecordDecoder")}catch(t){return console.warn(`Failed to get replication record ${e}:`,t),null}}async createCompressedTree(e,t){console.log("\u{1F333} Creating compressed agent tree...");let n=await mn(this.rpc,{payer:e,...t},this.programId);return console.log("\u2705 Compressed tree created successfully"),n}async createCompressedBatch(e,t,n){return console.log(`\u{1F680} Creating batch of ${n.length} compressed agents...`),await st(this.rpc,e,t,n,this.programId)}async getTreeState(e){return pn(this.rpc,e)}async migrateToCompressed(e,t,n){return console.log("\u{1F504} Migrating agent to compressed format..."),await fn(this.rpc,e,t,n,this.programId)}estimateSavings(e){return hn(e)}async listReplicationTemplates(e={}){try{let{REPLICATION_TEMPLATE_DISCRIMINATOR:t}=await import('./generated-U3L4KUE4.js'),n=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(t))}}];return (await this.getDecodedProgramAccounts("getReplicationTemplateDecoder",n)).slice(e.offset??0,(e.offset??0)+(e.limit??100)).map(({address:s,data:o})=>({address:s,data:o}))}catch(t){return console.warn("Failed to list replication templates:",t),[]}}async listReplicationRecords(e,t={}){try{let{REPLICATION_RECORD_DISCRIMINATOR:n}=await import('./generated-U3L4KUE4.js'),r=[{memcmp:{offset:0,bytes:C.encode(Buffer.from(n))}}];return e&&r.push({memcmp:{offset:40,bytes:C.encode(Buffer.from(e))}}),(await this.getDecodedProgramAccounts("getReplicationRecordDecoder",r)).slice(t.offset??0,(t.offset??0)+(t.limit??100)).map(({address:o,data:a})=>({address:o,data:a}))}catch(n){return console.warn("Failed to list replication records:",n),[]}}async searchByPerformance(e){let t=await this.list(),n=[];for(let r of t)try{let i=await this.getAnalytics(r.address);if(e.minSuccessRate&&i.successRate<e.minSuccessRate||e.minEarnings&&i.totalEarnings<e.minEarnings||e.minJobs&&i.totalJobsCompleted<e.minJobs||e.capabilities&&e.capabilities.length>0&&!e.capabilities.some(o=>r.data.capabilities.includes(o)))continue;n.push(r);}catch(i){console.warn(`Failed to get analytics for agent ${r.address}:`,i);}return n}};var ne=class extends a{constructor(e){super(e);}async _resolveServiceListingParams(e){let t=e.listingId??`listing-${Date.now()}-${Math.random().toString(36).substring(7)}`,n="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";return {title:e.title,description:e.description,amount:e.amount,tokenMint:e.tokenMint??e.paymentToken??n,serviceType:e.serviceType??"general",paymentToken:e.paymentToken??n,estimatedDelivery:e.estimatedDelivery??BigInt(10080*60),tags:e.tags??[],listingId:t,signer:e.signer}}async _resolveJobPostingParams(e){let t=e.budgetMin??e.amount,n=e.budgetMax??e.amount,r="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";return {title:e.title,description:e.description,amount:e.amount,requirements:e.requirements??[],deadline:e.deadline,skillsNeeded:e.skillsNeeded??[],budgetMin:t,budgetMax:n,paymentToken:e.paymentToken??r,jobType:e.jobType??"fixed",experienceLevel:e.experienceLevel??"any",signer:e.signer,tokenMint:e.tokenMint??r,createdAt:e.createdAt??BigInt(Math.floor(Date.now()/1e3))}}async _resolvePurchaseParams(e){return {serviceListingAddress:e.serviceListingAddress,listingId:e.listingId??0n,quantity:e.quantity??1,requirements:e.requirements??[],customInstructions:e.customInstructions??"",deadline:e.deadline??BigInt(Math.floor(Date.now()/1e3)+336*60*60),signer:e.signer,paymentTokenMint:e.paymentTokenMint??"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",calculateTransferFees:e.calculateTransferFees??true,expectedNetAmount:e.expectedNetAmount??BigInt(0)}}async _resolveApplicationParams(e){return {jobPostingAddress:e.jobPostingAddress,agentAddress:e.agentAddress,coverLetter:e.coverLetter??"I am interested in this job opportunity.",proposedPrice:e.proposedPrice??0n,estimatedDuration:e.estimatedDuration??7,proposedRate:e.proposedRate??0n,estimatedDelivery:e.estimatedDelivery??BigInt(Math.floor(Date.now()/1e3)+10080*60),portfolioItems:e.portfolioItems??[],signer:e.signer}}async createServiceListing(e,t,n,r,i){let s=await this._resolveServiceListingParams({...i,signer:e});return this.executeInstruction(()=>Zc({serviceListing:t,agent:n,userRegistry:r,creator:e,title:s.title,description:s.description,price:s.amount,tokenMint:s.tokenMint,serviceType:s.serviceType,paymentToken:s.paymentToken,estimatedDelivery:s.estimatedDelivery,tags:s.tags,listingId:s.listingId}),e,"service listing creation")}async updateServiceListing(e,t,n){console.warn("Direct service listing updates not available. Consider creating a new listing or updating agent service capabilities.");try{let{getUpdateAgentServiceInstruction:r}=await import('./generated-U3L4KUE4.js'),i=await this.getServiceListing(t);if(!i||!i.agent)throw new Error("Could not find listing or agent information");let s=r({agent:i.agent,owner:e,agentPubkey:i.agent,serviceEndpoint:n.title??`${i.title} - ${i.description}`,isActive:i.isActive,lastUpdated:BigInt(Math.floor(Date.now()/1e3)),metadataUri:n.description??i.description,capabilities:n.tags??[]});return await this.sendTransaction([s],[e])}catch(r){throw console.warn("Failed to update service listing via agent service:",r),new Error("Service listing updates require implementing updateServiceListing instruction in the smart contract, or create a new listing")}}async purchaseService(e,t){let n=await this._resolvePurchaseParams(t),r=await this.getServiceListing(n.serviceListingAddress);if(!r)throw new Error("Service listing not found");let i;if(t.calculateTransferFees&&t.paymentTokenMint){let s=t.expectedNetAmount??r.price;i=await this.calculateTokenTransferFees(s,t.paymentTokenMint,!!t.expectedNetAmount),console.log("Service purchase with transfer fees:",{originalAmount:i.originalAmount,feeAmount:i.feeAmount,netAmount:i.netAmount,totalRequired:i.totalRequired});}return this.executeInstruction(()=>Mi({servicePurchase:e,serviceListing:n.serviceListingAddress,buyer:n.signer,listingId:n.listingId,quantity:n.quantity,requirements:n.requirements,customInstructions:n.customInstructions,deadline:n.deadline}),n.signer,`service purchase${i?` (with ${i.feeAmount} transfer fee)`:""}`)}async createJobPosting(e,t){let n=await this._resolveJobPostingParams(t);return this.executeInstruction(()=>dc({jobPosting:e,employer:n.signer,title:n.title,description:n.description,requirements:n.requirements,budget:n.amount,deadline:n.deadline,skillsNeeded:n.skillsNeeded,budgetMin:n.budgetMin,budgetMax:n.budgetMax,paymentToken:n.paymentToken,jobType:n.jobType,experienceLevel:n.experienceLevel}),n.signer,"job posting creation")}async applyToJob(e,t){let n=await this._resolveApplicationParams(t);return this.executeInstruction(()=>X({jobApplication:e,jobPosting:n.jobPostingAddress,agent:n.agentAddress,agentOwner:n.signer,coverLetter:n.coverLetter,proposedPrice:n.proposedPrice,estimatedDuration:n.estimatedDuration,proposedRate:n.proposedRate,estimatedDelivery:n.estimatedDelivery,portfolioItems:n.portfolioItems}),n.signer,"job application")}async acceptJobApplication(e,t,n,r){return this.executeInstruction(()=>s$1({jobContract:t,jobPosting:n,jobApplication:r,employer:e}),e,"job application acceptance")}async getServiceListing(e){return this.getDecodedAccount(e,"getServiceListingDecoder")}async getServiceListings(){return (await this.getDecodedProgramAccounts("getServiceListingDecoder")).filter(({data:t})=>t.isActive).map(({address:t,data:n})=>({address:t,data:n}))}async getJobPostings(){return (await this.getDecodedProgramAccounts("getJobPostingDecoder")).map(({data:t})=>t).filter(t=>t.isActive)}async calculateTokenTransferFees(e,t,n=false){try{if(!await C$1(this.config.rpc,t))return {originalAmount:e,feeAmount:0n,netAmount:e,totalRequired:e,feeCalculation:{transferAmount:e,feeAmount:0n,netAmount:e,feeBasisPoints:0,wasFeeCapped:!1}};let i=await B$1(this.config.rpc,t);if(!i)return {originalAmount:e,feeAmount:0n,netAmount:e,totalRequired:e,feeCalculation:{transferAmount:e,feeAmount:0n,netAmount:e,feeBasisPoints:0,wasFeeCapped:!1}};let s;return n?(s=E$1(e,i),{originalAmount:e,feeAmount:s.feeAmount,netAmount:s.netAmount,totalRequired:s.transferAmount,feeCalculation:s}):(s=D(e,i),{originalAmount:e,feeAmount:s.feeAmount,netAmount:s.netAmount,totalRequired:e,feeCalculation:s})}catch(r){return console.warn("Failed to calculate transfer fees, assuming no fees:",r),{originalAmount:e,feeAmount:0n,netAmount:e,totalRequired:e,feeCalculation:{transferAmount:e,feeAmount:0n,netAmount:e,feeBasisPoints:0,wasFeeCapped:false}}}}async processMilestonePayment(e){let t=await this.calculateTokenTransferFees(e.paymentAmount,e.paymentToken,false),n=await this.getDecodedAccount(e.workOrderAddress,"getWorkOrderDecoder");if(!n)throw new Error("Work order not found");if(e.milestoneIndex<0)throw new Error("Invalid milestone index");let i=[await ni({escrow:e.escrowAddress,recipient:n.provider,paymentToken:e.paymentToken,authority:e.signer,workOrder:e.workOrderAddress})];return t.feeAmount>0n&&console.log(`Processing milestone payment with transfer fee: ${t.feeAmount} (${t.feeCalculation.feeBasisPoints} basis points)`),this.sendTransaction(i,[e.signer])}async verifyWorkDelivery(e){let t=gm({workOrder:e.workOrderAddress,workDelivery:e.workDeliveryAddress,client:e.signer,verificationNotes:e.verificationNotes??null});return this.executeInstruction(()=>t,e.signer,"work delivery verification")}async getWorkOrder(e){return this.getDecodedAccount(e,"getWorkOrderDecoder")}async getWorkOrdersByUser(e,t="client"){return (await this.getDecodedProgramAccounts("getWorkOrderDecoder")).map(({data:r})=>r).filter(r=>t==="client"?r.client===e:r.provider===e)}async searchServicesByCategory(e){return (await this.getServiceListings()).filter(({data:n})=>{let r=n;return r.serviceType.toLowerCase().includes(e.toLowerCase())||r.tags.some(i=>i.toLowerCase().includes(e.toLowerCase()))})}async searchJobsByBudget(e,t){return (await this.getJobPostings()).filter(r=>{let i=r.budget;return i>=e&&i<=t})}};var re=class extends a{constructor(e){super(e);}async createSession(e,t){let{deriveA2ASessionPda:n}=await import('./pda-2GUWRQ5G.js'),r=await n(this.config.programId,e.address),i=t.sessionId??BigInt(Date.now()),s="general",o=BigInt(Math.floor(Date.now()/1e3)+86400);return this.executeInstruction(()=>Wa({session:r,creator:e,sessionId:i,initiator:e.address,responder:e.address,sessionType:s,metadata:t.metadata,expiresAt:o}),e,"A2A session creation")}async sendMessage(e,t){try{let n=await this.getSession(t.session);if(!n)throw new Error("Session account not found");let r=n.createdAt,i$1=await i(this.programId,t.session,r),s=t.messageId??BigInt(Date.now()),o=BigInt(0),a="text",l=BigInt(Math.floor(Date.now()/1e3));return await this.executeInstruction(()=>Mj({message:i$1,session:t.session,sender:e,messageId:s,sessionId:o,senderArg:e.address,content:t.content,messageType:a,timestamp:l}),e,"A2A message sending")}catch(n){throw console.error("\u274C Failed to send A2A message:",n),n}}async updateStatus(e,t){return this.executeInstruction(()=>Mk({status:e,session:t.sessionAddress,updater:t.signer,statusId:t.statusId,agent:t.agent,statusArg:t.status,capabilities:t.capabilities,availability:t.availability,lastUpdated:t.lastUpdated}),t.signer,"A2A status update")}async closeSession(e,t){let n=await this.getSession(t);if(!n)throw new Error("Session not found");return this.updateStatus(t,{signer:e,sessionAddress:t,statusId:n.sessionId,agent:e.address,status:"closed",capabilities:[],availability:false,lastUpdated:BigInt(Math.floor(Date.now()/1e3))})}async getSession(e){return this.getDecodedAccount(e,"getA2ASessionDecoder")}async getMessages(e){return (await this.getDecodedProgramAccounts("getA2AMessageDecoder")).map(({data:n})=>n).filter(n=>n.session===e).sort((n,r)=>Number(n.sentAt-r.sentAt))}async getActiveSessions(e){let t=await this.getDecodedProgramAccounts("getA2ASessionDecoder"),n=BigInt(Math.floor(Date.now()/1e3));return t.map(({data:r})=>r).filter(r=>(r.initiator===e||r.responder===e)&&r.isActive&&(r.expiresAt===0n||r.expiresAt>n))}async subscribeToMessages(e,t){let n=true,r=0,i=setInterval(async()=>{if(!n){clearInterval(i);return}try{let s=await this.getMessages(e);s.length>r&&(s.slice(r).forEach(a=>t(a)),r=s.length);}catch(s){console.warn("Error polling for A2A messages:",s);}},5e3);return ()=>{n=false,clearInterval(i);}}};async function at(c,e,t){let[n]=await getProgramDerivedAddress({programAddress:c,seeds:[getBytesEncoder().encode(new TextEncoder().encode("auction")),getAddressEncoder().encode(e),getAddressEncoder().encode(t)]});return n}async function ie(c,e){let[t]=await getProgramDerivedAddress({programAddress:c,seeds:[getBytesEncoder().encode(new TextEncoder().encode("user_registry")),getAddressEncoder().encode(e)]});return t}var F=class{static now(){return BigInt(Math.floor(Date.now()/1e3))}static hoursToSeconds(e){return BigInt(e*3600)}static daysToSeconds(e){return BigInt(e*24*3600)}static getEndTime(e){return this.now()+this.hoursToSeconds(e)}static hasEnded(e){return this.now()>=e}static getTimeRemaining(e){let t=e-this.now();return t>0n?t:0n}static formatTimeRemaining(e){let t=Number(e);if(t<=0)return "Ended";let n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),s=t%60;return n>0?`${n}d ${r}h ${i}m`:r>0?`${r}h ${i}m`:i>0?`${i}m ${s}s`:`${s}s`}},N=class{static solToLamports(e){return BigInt(Math.floor(e*1e9))}static lamportsToSol(e){return Number(e)/1e9}static calculateMinimumBid(e,t){return e+t}static calculateIncrementPercentage(e,t){return e===0n?0:Number(t*100n/e)}static suggestBidIncrement(e){let t=this.lamportsToSol(e);return t<1?this.solToLamports(.01):t<10?this.solToLamports(.05):this.solToLamports(.1)}static calculateValueScore(e,t,n,r){let i=Number(e)/Number(t),s=Math.min(n/10,1),o=Math.max(0,1-Number(r)/86400);return i*.4+s*.3+o*.3}};var B=class{static calculateCurrentPrice(e,t,n,r,i,s="linear"){let o=i??F.now();if(o<=n)return e;if(o>=r)return t;let a=r-n,l=o-n,d=Number(l)/Number(a),u=e-t,g;switch(s){case "linear":g=BigInt(Math.floor(Number(u)*d));break;case "exponential":{let p=Math.pow(d,3);g=BigInt(Math.floor(Number(u)*p));break}default:g=BigInt(Math.floor(Number(u)*d));}let m=e-g;return m>t?m:t}static calculatePriceAtTime(e,t,n,r,i,s="linear"){return this.calculateCurrentPrice(e,t,n,r,i,s)}static calculatePriceDecayRate(e,t,n,r="linear"){let i=Number(e-t),s=Number(n);switch(r){case "linear":return i/s;case "exponential":return i/s;default:return i/s}}static getTimeForTargetPrice(e,t,n,r,i,s="linear"){if(n>e||n<t)return null;let o=i-r,a=e-t,l=e-n,d;switch(s){case "linear":d=Number(l)/Number(a);break;case "exponential":d=Math.sqrt(Number(l)/Number(a));break;default:d=Number(l)/Number(a);}let u=BigInt(Math.floor(Number(o)*d));return r+u}static validateDutchAuctionParams(e){let t=[];e.startingPrice<=e.reservePrice&&t.push("Starting price must be greater than reserve price for Dutch auction"),e.reservePrice<0n&&t.push("Reserve price cannot be negative"),e.endTime<=e.startTime&&t.push("End time must be after start time");let n=e.endTime-e.startTime;n<300n&&t.push("Dutch auction duration must be at least 5 minutes"),n>86400n*7n&&t.push("Dutch auction duration cannot exceed 7 days");let r=e.startingPrice-e.reservePrice,i=e.startingPrice/20n;return r<i&&t.push("Price range (starting - reserve) must be at least 5% of starting price"),{valid:t.length===0,errors:t}}static getDutchAuctionFeatures(){return {supportedDecayTypes:["linear","exponential"],maxDuration:86400*7,minDuration:300,minPriceRangePercent:5,supportsBuyNow:true,supportsReservePrice:true,supportsTimeExtension:true}}static isValidBid(e,t,n){return e>=t&&e>=n}},L=class{static meetsBidReserve(e,t,n,r=false){return e>=t}static canFinalizeWithReserve(e,t,n,r){return !r&&e<t?false:e>=t}static calculateMinimumBid(e,t,n,r){switch(r){case 0:{let i=e+n;return i>t?i:t}case 1:return e>=t?e:t;case 2:case 3:return t;default:return t}}static getReserveStatus(e,t,n,r=false,i,s,o=3){if(r&&i!==void 0){let g=!i&&(s??0)<o,m=o-(s??0);return {met:i,message:i?"Reserve price has been met":g?`Reserve price not yet met (${m} extensions available)`:"Reserve price not met (no extensions available)",canExtend:g,extensionsRemaining:m}}let a=e>=t,l=!a&&(s??0)<o,d=o-(s??0);if(a)return {met:true,message:"Reserve price has been met",canExtend:false,extensionsRemaining:d};if(r)return {met:false,message:l?`Reserve price not yet met (${d} extensions available)`:"Reserve price not met (no extensions available)",canExtend:l,extensionsRemaining:d};let u=t-e;return {met:false,message:l?`Reserve price not met (${N.lamportsToSol(u)} SOL below reserve, ${d} extensions available)`:`Reserve price not met (${N.lamportsToSol(u)} SOL below reserve, no extensions available)`,shortfall:u,canExtend:l,extensionsRemaining:d}}static validateReservePrice(e,t,n){let r=[];switch(e<0n&&r.push("Reserve price cannot be negative"),n){case 0:e>t&&r.push("Reserve price cannot exceed starting price for English auction");break;case 1:e>=t&&r.push("Reserve price must be below starting price for Dutch auction");break;case 2:case 3:e>t&&r.push("Reserve price should not exceed starting price for sealed bid auction");break}let i=t*95n/100n;return e>i&&n!==0&&r.push("Reserve price should not exceed 95% of starting price"),{valid:r.length===0,errors:r}}};function As(c,e,t,n,r,i){let s=B.calculateCurrentPrice(c,e,t,n,r,i),o=c-s,a=c-e,l=a===0n?0:Number(o*100n/a),d=s<=e?0n:n-r,u=n-t,g=u===0n?0:Number(a*10000n/u)/1e4;return {startingPrice:c,reservePrice:e,currentCalculatedPrice:s,startTime:t,endTime:n,decayType:i,priceDecayRate:g,timeToReachReserve:d,priceReductionTotal:o,priceReductionPercentage:l}}function bs(c){return c===1}function ws(c,e,t){return c>=e&&c>=t}var Ps=B.calculateCurrentPrice,ve={getDutchAuctionInfo:As,isDutchAuction:bs,isValidBid:ws,calculateCurrentPrice:Ps};var se=class extends a{constructor(e){super(e);}async createDutchAuction(e,t){console.log("\u{1F3D7}\uFE0F Creating Dutch auction...");let n=F.now(),r=n+t.duration,i=B.validateDutchAuctionParams({startingPrice:t.startPrice,reservePrice:t.reservePrice,startTime:n,endTime:r,decayType:t.decayType});if(!i.valid)throw new Error(`Dutch auction validation failed: ${i.errors.join(", ")}`);let s=L.validateReservePrice(t.reservePrice,t.startPrice,1);if(!s.valid)throw new Error(`Reserve price validation failed: ${s.errors.join(", ")}`);let o=await at(this.programId,t.agentAddress,e.address),a=await ie(this.programId,e.address),l={title:t.title,description:t.description,category:t.category,requirements:t.requirements,auctionType:"Dutch",decayType:t.decayType??"linear",priceDecayRate:B.calculatePriceDecayRate(t.startPrice,t.reservePrice,t.duration,t.decayType),createdAt:new Date().toISOString()},d=`data:application/json;base64,${Buffer.from(JSON.stringify(l)).toString("base64")}`,u={auctionData:{startingPrice:t.startPrice,reservePrice:t.reservePrice,minimumBidIncrement:N.suggestBidIncrement(t.startPrice),decayType:t.decayType},agent:t.agentAddress},g=await this.createServiceAuction(o,a,{auctionData:{auctionType:1,startingPrice:t.startPrice,reservePrice:t.reservePrice,auctionEndTime:r,minimumBidIncrement:u.auctionData.minimumBidIncrement},metadataUri:d,agent:t.agentAddress,signer:e,deadline:r});return console.log("\u2705 Dutch auction created successfully"),console.log(` Address: ${o}`),console.log(` Starting Price: ${N.lamportsToSol(t.startPrice)} SOL`),console.log(` Reserve Price: ${N.lamportsToSol(t.reservePrice)} SOL`),console.log(` Decay Type: ${t.decayType??"linear"}`),console.log(` Duration: ${F.formatTimeRemaining(t.duration)}`),console.log(` Signature: ${g}`),o}async create(e,t){let n=await at(this.programId,t.agentAddress,e.address),r=await ie(this.programId,e.address),i={"data-analysis":0,writing:0,coding:1,translation:0,automation:2,default:0},s=i[t.category]||i.default,o={title:t.title,description:t.description,category:t.category,requirements:t.requirements,createdAt:new Date().toISOString()},a=`data:application/json;base64,${Buffer.from(JSON.stringify(o)).toString("base64")}`,l={auctionData:{auctionType:s,startingPrice:t.startPrice,reservePrice:t.startPrice,auctionEndTime:BigInt(Math.floor(Date.now()/1e3))+t.duration,minimumBidIncrement:t.minIncrement},metadataUri:a,agent:t.agentAddress,signer:e},d=await this.createServiceAuction(n,r,l);return console.log("\u2705 Auction created successfully"),console.log(` Address: ${n}`),console.log(` Signature: ${d}`),n}async placeBid(e,t,n){if(!await this.getAuction(t))throw new Error("Auction not found");let i=await ie(this.programId,e.address);return this.placeAuctionBid(i,{auction:t,bidAmount:n,signer:e})}async calculateBidWithFees(e,t){try{if(!await n$1(t))return {totalAmount:e};let r=await B$1(this.config.rpc,t);if(!r)return {totalAmount:e};console.log("\u{1F4B0} Calculating bid with Token 2022 transfer fees:");let i=D(e,r),s=e+i.feeAmount;return console.log(` Base bid amount: ${e}`),console.log(` Transfer fee: ${i.feeAmount}`),console.log(` Total required: ${s}`),console.log(` Fee rate: ${i.feeBasisPoints/100}%`),{totalAmount:s,feeCalculation:i}}catch(n){return console.error("Failed to calculate bid fees:",n),{totalAmount:e}}}async ensureBidderTokenAccount(e,t){console.log("\u{1F3E6} Ensuring bidder token account exists...");let n=await m(t),r=await n$1(t);console.log(` Bidder: ${e}`),console.log(` Payment token: ${t}`),console.log(` Token program: ${n}`),console.log(` Is Token 2022: ${r}`);let i=await l(e,t,n);return console.log(` Bidder ATA: ${i.address}`),i}async placeBidWithToken2022Support(e,t,n,r={}){console.log("\u{1F3F7}\uFE0F Placing bid with Token 2022 support...");let i=r.paymentToken??"11111111111111111111111111111111",{totalAmount:s,feeCalculation:o}=r.includeTransferFees?await this.calculateBidWithFees(n,i):{totalAmount:n};await this.ensureBidderTokenAccount(e.address,i);let a=await this.placeBid(e,t,s);return console.log("\u2705 Bid placed successfully"),console.log(` Base bid: ${n}`),console.log(` Total paid: ${s}`),o&&console.log(` Transfer fee: ${o.feeAmount}`),{signature:a,totalBidAmount:s,feeCalculation:o}}async getAuctionPaymentInfo(e){let t=await this.getAuction(e);if(!t)throw new Error("Auction not found");let n="11111111111111111111111111111111",r=await n$1(n);return {paymentToken:n,isToken2022:r,hasTransferFees:r,minimumBidIncrement:t.minimumBidIncrement,currentPrice:t.currentPrice,estimatedFeeRate:r?1:void 0}}async createServiceAuction(e,t,n){return console.log("\u{1F3D7}\uFE0F Creating service auction..."),console.log(` Auction Type: ${n.auctionData.auctionType}`),console.log(` Starting Price: ${n.auctionData.startingPrice} lamports`),console.log(` Reserve Price: ${n.auctionData.reservePrice} lamports`),console.log(` Duration: ${Number(n.auctionData.auctionEndTime-BigInt(Math.floor(Date.now()/1e3)))} seconds`),this.validateCreateAuctionParams(n),this.executeInstruction(()=>Rc({auction:e,agent:n.agent,userRegistry:t,creator:n.signer,systemProgram:a$2,clock:b$1,auctionType:n.auctionData.auctionType,startingPrice:n.auctionData.startingPrice,reservePrice:n.auctionData.reservePrice,isReserveHidden:false,currentBid:n.auctionData.startingPrice,currentBidder:null,auctionEndTime:n.auctionData.auctionEndTime,minimumBidIncrement:n.auctionData.minimumBidIncrement,totalBids:0,dutchConfig:null}),n.signer,"service auction creation")}async createServiceAuctionWithDetails(e,t,n){return console.log("\u{1F3D7}\uFE0F Creating service auction with detailed results..."),this.validateCreateAuctionParams(n),this.executeInstructionWithDetails(()=>Rc({auction:e,agent:n.agent,userRegistry:t,creator:n.signer,systemProgram:a$2,clock:b$1,auctionType:n.auctionData.auctionType,startingPrice:n.auctionData.startingPrice,reservePrice:n.auctionData.reservePrice,isReserveHidden:false,currentBid:n.auctionData.startingPrice,currentBidder:null,auctionEndTime:n.auctionData.auctionEndTime,minimumBidIncrement:n.auctionData.minimumBidIncrement,totalBids:0,dutchConfig:null}),n.signer,"service auction creation")}async placeAuctionBid(e,t){console.log("\u{1F4B0} Placing auction bid..."),console.log(` Auction: ${t.auction}`),console.log(` Bid Amount: ${t.bidAmount} lamports`);let n=await this.getAuction(t.auction);if(!n)throw new Error("Auction not found");return this.validateBidParams(t,n),this.executeInstruction(()=>$h({auction:t.auction,userRegistry:e,bidder:t.signer,systemProgram:a$2,clock:b$1,bidAmount:t.bidAmount}),t.signer,"auction bid placement")}async placeAuctionBidWithDetails(e,t){console.log("\u{1F4B0} Placing auction bid with detailed results...");let n=await this.getAuction(t.auction);if(!n)throw new Error("Auction not found");return this.validateBidParams(t,n),this.executeInstructionWithDetails(()=>$h({auction:t.auction,userRegistry:e,bidder:t.signer,systemProgram:a$2,clock:b$1,bidAmount:t.bidAmount}),t.signer,"auction bid placement")}async placeDutchAuctionBid(e,t,n={}){console.log("\u{1F3F7}\uFE0F Placing Dutch auction bid..."),console.log(` Auction: ${t}`);let r=await this.getAuction(t);if(!r)throw new Error("Auction not found");if(r.auctionType!==1)throw new Error(`Auction type ${r.auctionType} is not a Dutch auction`);if(r.status!==0)throw new Error(`Cannot bid on auction with status: ${r.status}`);let i=F.now();if(i>=r.auctionEndTime)throw new Error("Dutch auction has ended");let s=B.calculateCurrentPrice(r.startingPrice,r.reservePrice,r.createdAt,r.auctionEndTime,i,"linear");console.log(` Current Dutch price: ${s} lamports`),console.log(` Starting price: ${r.startingPrice} lamports`),console.log(` Reserve price: ${r.reservePrice} lamports`);let o=ve.getDutchAuctionInfo(r.startingPrice,r.reservePrice,r.createdAt,r.auctionEndTime,i,"linear");if(!ve.isValidBid(s,s,r.reservePrice))throw new Error(`Current price ${s} does not meet auction requirements`);if(s<r.reservePrice)throw new Error(`Current price ${s} is below reserve price ${r.reservePrice}`);let a=s;if(n.includeTransferFees&&n.paymentToken){let{totalAmount:u}=await this.calculateBidWithFees(s,n.paymentToken);a=u;}let l=await ie(this.programId,e.address),d=await this.executeInstruction(()=>gi({auction:t,userRegistry:l,bidder:e,systemProgram:a$2,clock:b$1}),e,"Dutch auction bid placement");return console.log("\u2705 Dutch auction bid placed successfully"),console.log(` Final price: ${a} lamports`),console.log(` Time remaining: ${F.formatTimeRemaining(r.auctionEndTime-i)}`),console.log(` Signature: ${d}`),{signature:d,finalPrice:a,dutchInfo:o,priceAtTime:s}}async getDutchAuctionCurrentPrice(e){let t=await this.getAuction(e);if(!t)throw new Error("Auction not found");if(t.auctionType!==1)throw new Error("Not a Dutch auction");let n=F.now(),r=B.calculateCurrentPrice(t.startingPrice,t.reservePrice,t.createdAt,t.auctionEndTime,n,"linear"),i=ve.getDutchAuctionInfo(t.startingPrice,t.reservePrice,t.createdAt,t.auctionEndTime,n,"linear"),s=t.auctionEndTime>n?t.auctionEndTime-n:0n,o=r<=t.reservePrice;return {currentPrice:r,dutchInfo:i,timeRemaining:s,hasReachedReserve:o}}monitorDutchAuctionPrice(e,t,n=1e3){console.log(`\u{1F440} Starting Dutch auction price monitoring for ${e}`);let r=true,i,s=async()=>{if(r){try{let{currentPrice:o,timeRemaining:a,hasReachedReserve:l}=await this.getDutchAuctionCurrentPrice(e),d=i!==void 0?o-i:0n;if(t({currentPrice:o,priceChange:d,timeRemaining:a,hasReachedReserve:l}),i=o,a<=0n||l){console.log("\u{1F6D1} Dutch auction monitoring stopped - auction ended or reserve reached"),r=!1;return}}catch(o){console.warn("Error monitoring Dutch auction price:",o);}r&&setTimeout(s,n);}};return s(),()=>{console.log(`\u{1F6D1} Stopping Dutch auction price monitoring for ${e}`),r=false;}}async finalizeAuction(e){console.log("\u{1F3C1} Finalizing auction..."),console.log(` Auction: ${e.auction}`);let t=await this.getAuction(e.auction);if(!t)throw new Error("Auction not found");return this.validateAuctionCanBeFinalized(t),this.executeInstruction(()=>Jf({auction:e.auction,authority:e.signer,clock:b$1}),e.signer,"auction finalization")}async finalizeAuctionWithDetails(e){console.log("\u{1F3C1} Finalizing auction with detailed results...");let t=await this.getAuction(e.auction);if(!t)throw new Error("Auction not found");return this.validateAuctionCanBeFinalized(t),this.executeInstructionWithDetails(()=>Jf({auction:e.auction,authority:e.signer,clock:b$1}),e.signer,"auction finalization")}async extendAuctionForReserve(e){console.log("\u23F0 Extending auction for reserve price..."),console.log(` Auction: ${e.auction}`);let t=await this.getAuction(e.auction);if(!t)throw new Error("Auction not found");return this.validateAuctionCanBeExtended(t),this.executeInstruction(()=>uf({auction:e.auction,authority:e.signer,clock:b$1}),e.signer,"auction extension for reserve")}async checkExtensionEligibility(e){let t=await this.getAuction(e);if(!t)return {eligible:false,reason:"Auction not found"};if(t.status!==0)return {eligible:false,reason:"Auction is not active"};if(t.reserveMet)return {eligible:false,reason:"Reserve price already met"};let n=3,r=t.extensionCount;if(r>=n)return {eligible:false,reason:"Maximum extensions reached",extensionsRemaining:0};if(t.totalBids===0)return {eligible:false,reason:"No bids to justify extension"};let i=BigInt(Math.floor(Date.now()/1e3)),s=t.auctionEndTime>i?t.auctionEndTime-i:0n,o=t.reservePrice>t.currentPrice?t.reservePrice-t.currentPrice:0n;return {eligible:true,extensionsRemaining:n-r,reserveShortfall:o,timeRemaining:s}}async getAuction(e){try{return await this.getDecodedAccount(e,"getAuctionMarketplaceDecoder")}catch(t){console.warn(`Standard Auction account decoding failed for ${e}:`,t instanceof Error?t.message:String(t));try{let{AUCTION_MARKETPLACE_DISCRIMINATOR:n,getAuctionMarketplaceDecoder:r}=await import('./auctionMarketplace-W4YM7HKU.js'),i=await b(this.rpc,e,s=>r().decode(s),n,"AuctionMarketplace");if(i.needsAttention){let s=c(i.validation,"AuctionMarketplace",e);console.warn(s);}return i.account}catch(n){return console.error(`Safe decode also failed for AuctionMarketplace ${e}:`,n instanceof Error?n.message:String(n)),null}}}async getAuctionSummary(e){let t=await this.getAuction(e);if(!t)return null;let n=BigInt(Math.floor(Date.now()/1e3)),r=t.auctionEndTime>n?t.auctionEndTime-n:0n;return {auction:e,agent:t.agent,creator:t.creator,auctionType:t.auctionType,startingPrice:t.startingPrice,reservePrice:t.reservePrice,currentPrice:t.currentPrice,currentWinner:t.currentWinner.__option==="Some"?t.currentWinner.value:void 0,winner:t.winner.__option==="Some"?t.winner.value:void 0,auctionEndTime:t.auctionEndTime,minimumBidIncrement:t.minimumBidIncrement,totalBids:t.totalBids,status:t.status,timeRemaining:r,metadataUri:t.metadataUri}}async getBidHistory(e){let t=await this.getAuction(e);return t?t.bids.map(n=>({bidder:n.bidder,amount:n.amount,timestamp:n.timestamp,isWinning:n.isWinning})):[]}async listAuctions(e,t=50){console.log("\u{1F4CB} Listing auctions...");let r=(await this.getDecodedProgramAccounts("getAuctionMarketplaceDecoder")).map(({address:i,data:s})=>this.auctionToSummary(i,s)).filter(i=>this.applyAuctionFilter(i,e)).slice(0,t);return console.log(`\u2705 Found ${r.length} auctions`),r}async getAuctionsEndingSoon(e=3600){console.log(`\u23F0 Finding auctions ending in next ${e} seconds...`);let t=await this.listAuctions(),n=BigInt(Math.floor(Date.now()/1e3)),r=n+BigInt(e);return t.filter(i=>i.status===0&&i.auctionEndTime<=r&&i.auctionEndTime>n)}async getAuctionAnalytics(){return console.log("\u{1F4CA} Generating auction analytics..."),{totalAuctions:0,activeAuctions:0,settledAuctions:0,cancelledAuctions:0,totalVolume:0n,averageBidCount:0,averageAuctionDuration:0n,topBidders:[]}}async monitorAuction(e,t){console.log(`\u{1F440} Starting auction monitoring for ${e}`);let n=true,r=async()=>{if(n){try{let i=await this.getAuctionSummary(e);i&&t(i);}catch(i){console.warn("Error monitoring auction:",i);}setTimeout(()=>{n&&r();},5e3);}};return r(),()=>{console.log(`\u{1F6D1} Stopping auction monitoring for ${e}`),n=false;}}async calculateOptimalBid(e,t="conservative"){let n=await this.getAuctionSummary(e);if(!n)throw new Error("Auction not found");let r=n.currentPrice,i=n.minimumBidIncrement,s=n.timeRemaining??0n;switch(t){case "conservative":return r+i;case "aggressive":return r+i*3n;case "last_minute":return s<300n?r+i*2n:r+i;default:return r+i}}validateCreateAuctionParams(e){let{auctionData:t}=e,n=1000n,r=1000000000000n,i=100n;if(t.startingPrice<n||t.startingPrice>r)throw new Error(`Starting price must be between ${n} and ${r} lamports`);if(t.reservePrice<n||t.reservePrice>r)throw new Error(`Reserve price must be between ${n} and ${r} lamports`);let s=t.startingPrice/10n;if(t.minimumBidIncrement<i)throw new Error(`Minimum bid increment must be at least ${i} lamports`);if(t.minimumBidIncrement>s)throw new Error(`Minimum bid increment (${t.minimumBidIncrement}) cannot exceed 10% of starting price (${s})`);let o=BigInt(Math.floor(Date.now()/1e3));if(t.auctionEndTime<=o)throw new Error("Auction end time must be in the future");let a=t.auctionEndTime-o,l=3600n,d=86400n*30n;if(a<l)throw new Error("Auction duration must be at least 1 hour");if(a>d)throw new Error("Auction duration cannot exceed 30 days")}validateBidParams(e,t){if(t.status!==0)throw new Error(`Cannot bid on auction with status: ${t.status}`);if(BigInt(Math.floor(Date.now()/1e3))>=t.auctionEndTime)throw new Error("Auction has ended");if(!L.meetsBidReserve(e.bidAmount,t.reservePrice,t.auctionType)){let i=L.getReserveStatus(e.bidAmount,t.reservePrice,t.auctionType);throw new Error(`Bid does not meet reserve price: ${i.message}`)}let r=L.calculateMinimumBid(t.currentPrice,t.reservePrice,t.minimumBidIncrement,t.auctionType);if(e.bidAmount<r)throw new Error(`Bid amount ${e.bidAmount} is below minimum ${r}`);switch(t.auctionType){case 0:if(e.bidAmount<=t.currentPrice)throw new Error("Bid must be higher than current price for English auction");break;case 1:{let i=this.calculateDutchAuctionCurrentPrice(t);if(e.bidAmount<i)throw new Error(`Bid amount ${e.bidAmount} is below current Dutch auction price ${i}`);break}case 2:case 3:break;default:if(e.bidAmount<=t.currentPrice)throw new Error("Bid must be higher than current price")}}validateAuctionCanBeFinalized(e){if(e.status!==0)throw new Error(`Cannot finalize auction with status: ${e.status}`);if(BigInt(Math.floor(Date.now()/1e3))<e.auctionEndTime)throw new Error("Auction has not ended yet")}validateAuctionCanBeExtended(e){if(e.status!==0)throw new Error(`Cannot extend auction with status: ${e.status}`);if(e.reserveMet)throw new Error("Cannot extend auction - reserve price already met");let t=3;if(e.extensionCount>=t)throw new Error(`Cannot extend auction - maximum extensions (${t}) reached`);if(e.totalBids===0)throw new Error("Cannot extend auction - no bids received");if(BigInt(Math.floor(Date.now()/1e3))<e.auctionEndTime-300n)throw new Error("Cannot extend auction - must be within 5 minutes of end time")}auctionToSummary(e,t){let n=BigInt(Math.floor(Date.now()/1e3)),r=t.auctionEndTime>n?t.auctionEndTime-n:0n;return {auction:e,agent:t.agent,creator:t.creator,auctionType:t.auctionType,startingPrice:t.startingPrice,reservePrice:t.reservePrice,currentPrice:t.currentPrice,currentWinner:t.currentWinner.__option==="Some"?t.currentWinner.value:void 0,winner:t.winner.__option==="Some"?t.winner.value:void 0,auctionEndTime:t.auctionEndTime,minimumBidIncrement:t.minimumBidIncrement,totalBids:t.totalBids,status:t.status,timeRemaining:r,metadataUri:`Auction for ${t.agent}`}}async list(e={}){return this.listAuctions(e.filter,e.limit)}applyAuctionFilter(e,t){return t?!(t.status&&e.status!==t.status||t.creator&&e.creator!==t.creator||t.agent&&e.agent!==t.agent||t.auctionType&&e.auctionType!==t.auctionType||t.minPrice!==void 0&&e.currentPrice<t.minPrice||t.maxPrice!==void 0&&e.currentPrice>t.maxPrice||t.endsBefore&&e.auctionEndTime>t.endsBefore||t.endsAfter&&e.auctionEndTime<t.endsAfter):true}calculateDutchAuctionCurrentPrice(e){if(e.auctionType!==1)return e.currentPrice;let t=e.createdAt,n=e.auctionEndTime;return B.calculateCurrentPrice(e.startingPrice,e.reservePrice,t,n,void 0,"linear")}};var oe=class extends a{constructor(e){super(e);}async fileDispute(e,t,n){console.log("\u{1F4CB} Filing dispute..."),console.log(` Transaction: ${n.transaction}`),console.log(` Respondent: ${n.respondent}`),console.log(` Reason: ${n.reason}`),this.validateFileDisputeParams(n);let r=Cf({dispute:t,transaction:n.transaction,userRegistry:n.userRegistry??await this.deriveUserRegistry(e),complainant:e,respondent:n.respondent,systemProgram:a$2,clock:b$1,reason:n.reason}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Dispute filed with signature: ${i}`),i}async fileDisputeWithDetails(e,t,n){console.log("\u{1F4CB} Filing dispute with detailed results..."),this.validateFileDisputeParams(n);let r=Cf({dispute:t,transaction:n.transaction,userRegistry:n.userRegistry??await this.deriveUserRegistry(e),complainant:e,respondent:n.respondent,systemProgram:a$2,clock:b$1,reason:n.reason});return this.sendTransactionWithDetails([r],[e])}async submitEvidence(e,t){console.log("\u{1F4C4} Submitting dispute evidence..."),console.log(` Dispute: ${t.dispute}`),console.log(` Evidence Type: ${t.evidenceType}`),console.log(` Evidence Length: ${t.evidenceData.length} characters`),this.validateEvidenceParams(t);let n=await this.getDispute(t.dispute);if(!n)throw new Error("Dispute not found");this.validateEvidenceSubmissionAllowed(n);let r=hk({dispute:t.dispute,userRegistry:t.userRegistry??await this.deriveUserRegistry(e),submitter:e,clock:b$1,evidenceType:t.evidenceType,evidenceData:t.evidenceData}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Evidence submitted with signature: ${i}`),i}async submitEvidenceWithDetails(e,t){console.log("\u{1F4C4} Submitting dispute evidence with detailed results..."),this.validateEvidenceParams(t);let n=await this.getDispute(t.dispute);if(!n)throw new Error("Dispute not found");this.validateEvidenceSubmissionAllowed(n);let r=hk({dispute:t.dispute,userRegistry:t.userRegistry??await this.deriveUserRegistry(e),submitter:e,clock:b$1,evidenceType:t.evidenceType,evidenceData:t.evidenceData});return this.sendTransactionWithDetails([r],[e])}async resolveDispute(e,t){console.log("\u2696\uFE0F Resolving dispute..."),console.log(` Dispute: ${t.dispute}`),console.log(` Ruling: ${t.rulingInFavorOfComplainant?"Complainant":"Respondent"} favored`),console.log(` Resolution: ${t.resolution}`),this.validateResolveDisputeParams(t);let n=await this.getDispute(t.dispute);if(!n)throw new Error("Dispute not found");this.validateDisputeCanBeResolved(n);let r=Fj({dispute:t.dispute,arbitratorRegistry:t.userRegistry??await this.deriveUserRegistry(e),arbitrator:e,clock:b$1,resolution:t.resolution,awardToComplainant:t.rulingInFavorOfComplainant}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Dispute resolved with signature: ${i}`),i}async resolveDisputeWithDetails(e,t){console.log("\u2696\uFE0F Resolving dispute with detailed results..."),this.validateResolveDisputeParams(t);let n=await this.getDispute(t.dispute);if(!n)throw new Error("Dispute not found");this.validateDisputeCanBeResolved(n);let r=Fj({dispute:t.dispute,arbitratorRegistry:t.userRegistry??await this.deriveUserRegistry(e),arbitrator:e,clock:b$1,resolution:t.resolution,awardToComplainant:t.rulingInFavorOfComplainant});return this.sendTransactionWithDetails([r],[e])}async getDispute(e){return this.getDecodedAccount(e,"getDisputeCaseDecoder")}async getDisputeSummary(e){let t=await this.getDispute(e);if(!t)return null;let n=BigInt(Math.floor(Date.now()/1e3)),r=Math.floor(Number(n-t.createdAt)/86400);return {dispute:e,transaction:t.transaction,complainant:t.complainant,respondent:t.respondent,moderator:t.moderator.__option==="Some"?t.moderator.value:void 0,reason:t.reason,status:t.status,evidence:t.evidence,resolution:t.resolution.__option==="Some"?t.resolution.value:void 0,aiScore:t.aiScore,humanReview:t.humanReview,createdAt:t.createdAt,resolvedAt:t.resolvedAt.__option==="Some"?t.resolvedAt.value:void 0,daysSinceCreated:r,evidenceCount:t.evidence.length}}async getEvidenceHistory(e){let t=await this.getDispute(e);return t?t.evidence.sort((n,r)=>Number(n.timestamp-r.timestamp)):[]}async listDisputes(e,t=50){console.log("\u{1F4CB} Listing disputes...");try{let r=(await this.getDecodedProgramAccounts("getDisputeCaseDecoder",[])).map(({address:i,data:s})=>this.disputeToSummary(i,s)).filter(i=>this.applyDisputeFilter(i,e)).slice(0,t);return console.log(`\u2705 Found ${r.length} disputes`),r}catch(n){return console.warn("Failed to list disputes:",n),[]}}async getActiveDisputes(e){return console.log("\u26A1 Finding active disputes..."),(await this.listDisputes()).filter(n=>[0,1,2].includes(n.status)&&(!e||n.moderator===e))}async getDisputeAnalytics(){return console.log("\u{1F4CA} Generating dispute analytics..."),{totalDisputes:0,activeDisputes:0,resolvedDisputes:0,escalatedDisputes:0,averageResolutionTime:0n,complainantSuccessRate:0,mostCommonReasons:[],topMediators:[]}}async escalateDispute(e,t,n){console.log("\u{1F6A8} Escalating dispute to human review...");try{let r=await this.getDecodedAccount(t,"getDisputeCaseDecoder");if(!r)throw new Error("Dispute not found");if(r.status===3||r.status===5)throw new Error("Cannot escalate resolved or cancelled disputes");let i=await this.submitEvidence(e,{dispute:t,evidenceType:"escalation_request",evidenceData:JSON.stringify({reason:n,requestedBy:e.address,timestamp:Date.now(),requiresHumanReview:!0,escalationLevel:2})});return console.log("\u2705 Dispute escalated successfully"),console.log("\u{1F504} Human moderator will review within 24 hours"),i}catch(r){throw console.error("\u274C Failed to escalate dispute:",r),r}}async monitorDispute(e,t){console.log(`\u{1F440} Starting dispute monitoring for ${e}`);let n=true,r=async()=>{if(n){try{let i=await this.getDisputeSummary(e);i&&t(i);}catch(i){console.warn("Error monitoring dispute:",i);}setTimeout(r,1e4);}};return r(),()=>{console.log(`\u{1F6D1} Stopping dispute monitoring for ${e}`),n=false;}}validateFileDisputeParams(e){if(!e.reason||e.reason.trim().length===0)throw new Error("Dispute reason is required");if(e.reason.length>500)throw new Error("Dispute reason cannot exceed 500 characters");if(e.transaction===e.respondent)throw new Error("Transaction and respondent cannot be the same")}validateEvidenceParams(e){if(!e.evidenceType||e.evidenceType.trim().length===0)throw new Error("Evidence type is required");if(!e.evidenceData||e.evidenceData.trim().length===0)throw new Error("Evidence data is required");if(e.evidenceData.length>2e3)throw new Error("Evidence data cannot exceed 2000 characters")}validateResolveDisputeParams(e){if(!e.resolution||e.resolution.trim().length===0)throw new Error("Resolution description is required");if(e.resolution.length>1e3)throw new Error("Resolution cannot exceed 1000 characters")}validateEvidenceSubmissionAllowed(e){if(![0,1,2].includes(e.status))throw new Error(`Cannot submit evidence for dispute with status: ${e.status}`)}validateDisputeCanBeResolved(e){if(![0,1,2,4].includes(e.status))throw new Error(`Cannot resolve dispute with status: ${e.status}`)}async deriveUserRegistry(e){let{deriveUserRegistryPda:t}=await import('./pda-2GUWRQ5G.js');return t(this.config.programId,e.address)}disputeToSummary(e,t){let n=BigInt(Math.floor(Date.now()/1e3)),r=Math.floor(Number(n-t.createdAt)/86400);return {dispute:e,transaction:t.transaction,complainant:t.complainant,respondent:t.respondent,moderator:t.moderator.__option==="Some"?t.moderator.value:void 0,reason:t.reason,status:t.status,evidence:t.evidence,resolution:t.resolution.__option==="Some"?t.resolution.value:void 0,aiScore:t.aiScore,humanReview:t.humanReview,createdAt:t.createdAt,resolvedAt:t.resolvedAt.__option==="Some"?t.resolvedAt.value:void 0,daysSinceCreated:r,evidenceCount:t.evidence.length}}applyDisputeFilter(e,t){return t?!(t.status&&e.status!==t.status||t.complainant&&e.complainant!==t.complainant||t.respondent&&e.respondent!==t.respondent||t.moderator&&e.moderator!==t.moderator||t.createdAfter&&e.createdAt<t.createdAfter||t.createdBefore&&e.createdAt>t.createdBefore||t.hasEvidence!==void 0&&e.evidenceCount>0!==t.hasEvidence||t.requiresHumanReview!==void 0&&e.humanReview!==t.requiresHumanReview):true}};var ae=class extends a{constructor(e){super(e);}async createMultisig(e,t,n){console.log("\u{1F3DB}\uFE0F Creating multi-signature wallet..."),console.log(` Multisig ID: ${n.multisigId}`),console.log(` Threshold: ${n.threshold} of ${n.signers.length} signers`),console.log(` Signers: ${n.signers.join(", ")}`),this.validateCreateMultisigParams(n);let r=tc({multisig:t,owner:e,systemProgram:a$2,multisigId:n.multisigId,threshold:n.threshold,signers:n.signers,config:{requireSequentialSigning:n.config.requireSequentialSigning,allowOwnerOffCurve:n.config.allowOwnerOffCurve}}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Multi-signature wallet created with signature: ${i}`),i}async createMultisigWithDetails(e,t,n){console.log("\u{1F3DB}\uFE0F Creating multi-signature wallet with detailed results..."),this.validateCreateMultisigParams(n);let r=tc({multisig:t,owner:e,systemProgram:a$2,multisigId:n.multisigId,threshold:n.threshold,signers:n.signers,config:n.config});return this.sendTransactionWithDetails([r],[e])}async createProposal(e,t,n){console.log("\u{1F4DC} Creating governance proposal..."),console.log(` Proposal ID: ${n.proposalId}`),console.log(` Type: ${n.proposalType}`),console.log(` Title: ${n.title}`),console.log(` Execution Delay: ${n.executionParams.executionDelay} seconds`),this.validateCreateProposalParams(n);let r=vg({proposal:t,proposer:e,systemProgram:a$2,proposalId:n.proposalId,title:n.title,description:n.description,proposalType:n.proposalType,executionParams:n.executionParams}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Governance proposal created with signature: ${i}`),i}async createProposalWithDetails(e,t,n){console.log("\u{1F4DC} Creating governance proposal with detailed results..."),this.validateCreateProposalParams(n);let r=vg({proposal:t,proposer:e,systemProgram:a$2,proposalId:n.proposalId,title:n.title,description:n.description,proposalType:n.proposalType,executionParams:n.executionParams});return this.sendTransactionWithDetails([r],[e])}async initializeRbac(e,t,n){console.log("\u{1F510} Initializing RBAC configuration..."),console.log(` Initial Roles: ${n.initialRoles.length} roles`),this.validateInitializeRbacParams(n);let r=Tg({rbacConfig:t,authority:e,systemProgram:a$2,initialRoles:n.initialRoles}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 RBAC configuration initialized with signature: ${i}`),i}async initializeRbacWithDetails(e,t,n){console.log("\u{1F510} Initializing RBAC configuration with detailed results..."),this.validateInitializeRbacParams(n);let r=Tg({rbacConfig:t,authority:e,systemProgram:a$2,initialRoles:n.initialRoles});return this.sendTransactionWithDetails([r],[e])}async castVote(e,t,n,r,i){console.log("\u{1F5F3}\uFE0F Casting vote on proposal..."),console.log(` Proposal: ${t}`),console.log(` Vote: ${r}`);let s=Ga({proposal:t,voter:e,voterTokenAccount:n,voteChoice:r,reasoning:i??null}),o=await this.sendTransaction([s],[e]);return console.log(`\u2705 Vote cast with signature: ${o}`),o}async delegateVote(e,t,n,r,i,s){console.log("\u{1F91D} Delegating voting power..."),console.log(` Delegate: ${t}`),console.log(` Scope: ${i}`);let o=Cd({delegator:e,delegate:t,delegatorTokenAccount:n,proposalId:r,scope:i,expiresAt:s??null}),a=await this.sendTransaction([o],[e]);return console.log(`\u2705 Voting power delegated with signature: ${a}`),a}async tallyVotes(e,t){console.log("\u{1F4CA} Tallying votes for proposal..."),console.log(` Proposal: ${t}`);let n=Ek({proposal:t,authority:e}),r=await this.sendTransaction([n],[e]);return console.log(`\u2705 Votes tallied with signature: ${r}`),r}async executeProposal(e,t,n){console.log("\u26A1 Executing governance proposal..."),console.log(` Proposal: ${t}`),console.log(` Target Program: ${n}`);let r=ee({proposal:t,executor:e,targetProgram:n}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Proposal executed with signature: ${i}`),i}async getMultisig(e){return this.getDecodedAccount(e,"getMultisigDecoder")}async getProposal(e){return this.getDecodedAccount(e,"getGovernanceProposalDecoder")}async getRbacConfig(e){return this.getDecodedAccount(e,"getRbacConfigDecoder")}async getMultisigSummary(e){let t=await this.getMultisig(e);return t?{multisig:e,multisigId:t.multisigId,threshold:t.threshold,signers:t.signers,owner:t.owner,createdAt:t.createdAt,updatedAt:t.updatedAt,config:t.config,emergencyConfig:void 0,pendingTransactions:0,isActive:t.signers.length>=t.threshold}:null}async getProposalSummary(e){let t=await this.getProposal(e);if(!t)return null;let n=BigInt(Math.floor(Date.now()/1e3)),r=t.createdAt+BigInt(10080*60),i=r>n?r-n:0n,s=t.votingResults.votesFor+t.votingResults.votesAgainst+t.votingResults.votesAbstain,o=t.votingResults.quorumReached,l=n>=r&&o&&t.votingResults.votesFor>t.votingResults.votesAgainst&&t.status===1;return {proposal:e,proposalId:t.proposalId,proposalType:t.proposalType,proposer:t.proposer,title:t.title,description:t.description,status:t.status,createdAt:t.createdAt,votingEndsAt:r,executionDelay:t.executionParams.executionDelay,forVotes:t.votingResults.votesFor,againstVotes:t.votingResults.votesAgainst,abstainVotes:t.votingResults.votesAbstain,totalVotes:s,quorumReached:o,canExecute:l,timeRemaining:i>0n?i:void 0}}async listMultisigs(e,t=50){console.log("\u{1F4CB} Listing multisigs...");try{let r=(await this.getDecodedProgramAccounts("getMultisigDecoder",[])).map(({address:i,data:s})=>this.multisigToSummary(i,s)).filter(i=>this.applyMultisigFilter(i,e)).slice(0,t);return console.log(`\u2705 Found ${r.length} multisigs`),r}catch(n){return console.warn("Failed to list multisigs:",n),[]}}async listProposals(e,t=50){console.log("\u{1F4CB} Listing proposals...");try{let r=(await this.getDecodedProgramAccounts("getGovernanceProposalDecoder",[])).map(({address:i,data:s})=>this.proposalToSummary(i,s)).filter(i=>this.applyProposalFilter(i,e)).slice(0,t);return console.log(`\u2705 Found ${r.length} proposals`),r}catch(n){return console.warn("Failed to list proposals:",n),[]}}async getActiveProposals(){console.log("\u{1F5F3}\uFE0F Finding active proposals...");let e=await this.listProposals(),t=BigInt(Math.floor(Date.now()/1e3));return e.filter(n=>n.status===1&&n.votingEndsAt>t)}async getGovernanceAnalytics(){console.log("\u{1F4CA} Generating governance analytics...");try{let[e,t]=await Promise.all([this.listMultisigs(),this.listProposals()]),n=e.length,r=e.filter(h=>h.isActive).length,i=t.length,s=t.filter(h=>h.status===0||h.status===1).length,o=t.filter(h=>h.status===2).length,a=t.filter(h=>h.status===3).length,l=t.filter(h=>(h.yesVotes??0n)>0n||(h.noVotes??0n)>0n),d=l.reduce((h,A)=>h+Number((A.yesVotes??0n)+(A.noVotes??0n)),0),u=l.length>0?Math.round(d/l.length):0,g=new Map;e.forEach(h=>{h.signers.forEach(A=>{let y=g.get(A)??{multisigCount:0,transactionCount:0};g.set(A,{multisigCount:y.multisigCount+1,transactionCount:y.transactionCount+1});});});let m=Array.from(g.entries()).map(([h,A])=>({signer:h,multisigCount:A.multisigCount,transactionCount:A.transactionCount})).sort((h,A)=>A.transactionCount-h.transactionCount).slice(0,10),p=o+a,f=p>0?Math.round(o/p*100):0,b=l.length>0?BigInt(Math.round(d/l.length)):0n;return {totalMultisigs:n,activeMultisigs:r,totalProposals:i,activeProposals:s,passedProposals:o,failedProposals:a,averageVotingParticipation:u,topSigners:m,proposalSuccess:{rate:f,averageVotes:b}}}catch(e){return console.error("Failed to generate governance analytics:",e),{totalMultisigs:0,activeMultisigs:0,totalProposals:0,activeProposals:0,passedProposals:0,failedProposals:0,averageVotingParticipation:0,topSigners:[],proposalSuccess:{rate:0,averageVotes:0n}}}}async monitorProposal(e,t){console.log(`\u{1F440} Starting proposal monitoring for ${e}`);let n=true,r=async()=>{if(n){try{let i=await this.getProposalSummary(e);i&&t(i);}catch(i){console.warn("Error monitoring proposal:",i);}setTimeout(r,3e4);}};return r(),()=>{console.log(`\u{1F6D1} Stopping proposal monitoring for ${e}`),n=false;}}validateCreateMultisigParams(e){if(e.threshold<=0)throw new Error("Threshold must be greater than 0");if(e.threshold>e.signers.length)throw new Error("Threshold cannot exceed number of signers");if(e.signers.length===0)throw new Error("At least one signer is required");if(e.signers.length>20)throw new Error("Cannot have more than 20 signers");if(new Set(e.signers).size!==e.signers.length)throw new Error("Duplicate signers are not allowed")}validateCreateProposalParams(e){if(!e.title||e.title.trim().length===0)throw new Error("Proposal title is required");if(e.title.length>100)throw new Error("Proposal title cannot exceed 100 characters");if(!e.description||e.description.trim().length===0)throw new Error("Proposal description is required");if(e.description.length>2e3)throw new Error("Proposal description cannot exceed 2000 characters")}validateInitializeRbacParams(e){if(e.initialRoles.length===0)throw new Error("At least one initial role is required");if(e.initialRoles.length>10)throw new Error("Cannot have more than 10 initial roles")}multisigToSummary(e,t){return {multisig:e,multisigId:t.multisigId,threshold:t.threshold,signers:t.signers,owner:t.owner,createdAt:t.createdAt,updatedAt:t.updatedAt,config:t.config,emergencyConfig:void 0,pendingTransactions:0,isActive:t.signers.length>=t.threshold}}proposalToSummary(e,t){let n=BigInt(Math.floor(Date.now()/1e3)),r=t.createdAt+BigInt(10080*60),i=r>n?r-n:0n,s=t.votingResults.votesFor+t.votingResults.votesAgainst+t.votingResults.votesAbstain,a=n>=r&&t.votingResults.quorumReached&&t.votingResults.votesFor>t.votingResults.votesAgainst&&t.status===1;return {proposal:e,proposalId:t.proposalId,proposalType:t.proposalType,proposer:t.proposer,title:t.title,description:t.description,status:t.status,createdAt:t.createdAt,votingEndsAt:r,executionDelay:t.executionParams.executionDelay,forVotes:t.votingResults.votesFor,againstVotes:t.votingResults.votesAgainst,abstainVotes:t.votingResults.votesAbstain,totalVotes:s,quorumReached:t.votingResults.quorumReached,timeRemaining:i,canExecute:a}}applyMultisigFilter(e,t){return t?!(t.threshold!==void 0&&e.threshold!==t.threshold||t.owner&&e.owner!==t.owner||t.minSigners!==void 0&&e.signers.length<t.minSigners||t.createdAfter&&e.createdAt<t.createdAfter||t.createdBefore&&e.createdAt>t.createdBefore):true}applyProposalFilter(e,t){return t?!(t.status&&e.status!==t.status||t.proposer&&e.proposer!==t.proposer||t.proposalType&&e.proposalType!==t.proposalType||t.createdAfter&&e.createdAt<t.createdAfter||t.createdBefore&&e.createdAt>t.createdBefore||t.votingActive!==void 0&&(e.timeRemaining!==void 0&&e.timeRemaining>0n)!==t.votingActive||t.executable!==void 0&&e.canExecute!==t.executable):true}};var ce=class extends a{constructor(e){super(e);}async createBulkDeal(e,t,n){console.log("\u{1F4E6} Creating bulk deal..."),console.log(` Deal ID: ${n.dealId}`),console.log(` Type: ${n.dealType}`),console.log(` Volume Range: ${n.minimumVolume} - ${n.maximumVolume}`);let r=kb({deal:t,agent:n.agent??t,userRegistry:await this.deriveUserRegistry(e),customer:e,systemProgram:a$2,clock:b$1,dealId:n.dealId,dealType:n.dealType,totalVolume:Number(n.minimumVolume),totalValue:n.maximumVolume,discountPercentage:10,volumeTiers:[],slaTerms:"",contractDuration:2592000n,endDate:BigInt(Math.floor(Date.now()/1e3)+2592e3)}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Bulk deal created with signature: ${i}`),i}async executeBatch(e,t){console.log("\u26A1 Executing bulk deal batch..."),console.log(` Bulk Deal: ${t.bulkDeal}`),console.log(` Batch Size: ${t.batchSize}`),console.log(` Total Volume: ${t.totalVolume}`);let n=Zd({deal:t.bulkDeal,userRegistry:await this.deriveUserRegistry(e),authority:e,clock:b$1,batchSize:t.batchSize}),r=await this.sendTransaction([n],[e]);return console.log(`\u2705 Bulk deal batch executed with signature: ${r}`),r}calculateTierPricing(e,t){let n=[...t].sort((r,i)=>r.minQuantity-i.minQuantity);for(let r=n.length-1;r>=0;r--){let i=n[r];if(e>=i.minQuantity)return {tier:i,discount:i.discountPercentage}}return null}async deriveUserRegistry(e){let{deriveUserRegistryPda:t}=await import('./pda-2GUWRQ5G.js');return t(this.config.programId,e.address)}};var le=class extends a{constructor(e){super(e);}async createDashboard(e,t,n){console.log("\u{1F4CA} Creating analytics dashboard..."),console.log(` Dashboard ID: ${n.dashboardId}`),console.log(` Agent ID: ${n.agentId}`),console.log(` Metric Types: ${n.metricTypes.join(", ")}`),console.log(` Reporting Frequency: ${n.reportingFrequency}`),this.validateCreateDashboardParams(n);let r={agentId:n.agentId,metricTypes:n.metricTypes,reportingFrequency:n.reportingFrequency,alertThresholds:Object.fromEntries(n.alertThresholds)},i=cb({dashboard:t,userRegistry:await this.deriveUserRegistry(e),owner:e,systemProgram:a$2,clock:b$1,dashboardId:n.dashboardId,metrics:JSON.stringify(r)}),s=await this.sendTransaction([i],[e]);return console.log(`\u2705 Analytics dashboard created with signature: ${s}`),s}async updateDashboard(e,t){console.log("\u{1F4C8} Updating analytics dashboard..."),console.log(` Dashboard: ${t.dashboard}`),console.log(` Revenue: ${t.revenue} lamports`),console.log(` Transaction Count: ${t.transactionCount}`),console.log(` Success Rate: ${(t.successRate*100).toFixed(1)}%`),this.validateUpdateDashboardParams(t);let n={revenue:t.revenue.toString(),transactionCount:t.transactionCount,successRate:t.successRate,averageResponseTime:t.averageResponseTime,customerRating:t.customerRating,utilizationRate:t.utilizationRate,timestamp:Math.floor(Date.now()/1e3)},r=ql({dashboard:t.dashboard,userRegistry:await this.deriveUserRegistry(e),owner:e,clock:b$1,newMetrics:JSON.stringify(n)}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Analytics dashboard updated with signature: ${i}`),i}async createMarketAnalytics(e,t,n){console.log("\u{1F310} Creating market analytics..."),console.log(` Tracking Period: ${n.trackingPeriod} seconds`),n.marketSegment&&console.log(` Market Segment: ${n.marketSegment}`),this.validateCreateMarketAnalyticsParams(n);let r=BigInt(Math.floor(Date.now()/1e3)),i=r,s=r+n.trackingPeriod,o=lc({marketAnalytics:t,authority:e,systemProgram:a$2,clock:b$1,periodStart:i,periodEnd:s}),a=await this.sendTransaction([o],[e]);return console.log(`\u2705 Market analytics created with signature: ${a}`),a}async updateMarketAnalytics(e,t){console.log("\u{1F4CA} Updating market analytics..."),console.log(` Market Analytics: ${t.marketAnalytics}`),console.log(` Total Transactions: ${t.totalTransactions}`),console.log(` Total Revenue: ${t.totalRevenue} lamports`),console.log(` Active Agents: ${t.activeAgents}`),this.validateUpdateMarketAnalyticsParams(t);let n=Tl({marketAnalytics:t.marketAnalytics,authority:e,clock:b$1,volume:t.totalRevenue,price:t.averageTransactionValue}),r=await this.sendTransaction([n],[e]);return console.log(`\u2705 Market analytics updated with signature: ${r}`),r}async addTopAgent(e,t){console.log("\u{1F3C6} Adding top performing agent..."),console.log(` Agent: ${t.agent}`),console.log(` Performance Score: ${t.performanceScore}`),console.log(` Rank: ${t.rank}`),console.log(` Category: ${t.category}`),this.validateAddTopAgentParams(t);let n=P({marketAnalytics:await this.deriveMarketAnalyticsPda(),authority:e,clock:b$1,agent:t.agent}),r=await this.sendTransaction([n],[e]);return console.log(`\u2705 Top agent added with signature: ${r}`),r}async getDashboard(e){return this.getDecodedAccount(e,"getAnalyticsDashboardDecoder")}async getMarketAnalytics(e){return this.getDecodedAccount(e,"getMarketAnalyticsDecoder")}async getDashboardSummary(e){let t=await this.getDashboard(e);if(!t)return null;let n={};try{n=JSON.parse(t.metrics);}catch(m){console.warn("Failed to parse dashboard metrics:",m);}let r=BigInt(n.revenue??"0"),i=n.transactionCount??0,s=n.successRate??0,o=n.averageResponseTime??0,a=n.customerRating??0,l=n.utilizationRate??0,d=n.agentId??t.owner,u=this.calculatePerformanceGrade(s,a,l),g=this.determineTrendDirection(n);return {dashboard:e,dashboardId:t.dashboardId,agentId:d,revenue:r,transactionCount:i,successRate:s,averageResponseTime:o,customerRating:a,utilizationRate:l,createdAt:t.createdAt,lastUpdated:t.updatedAt,performanceGrade:u,trendDirection:g}}async getPerformanceMetrics(){return console.log("\u{1F4CA} Generating comprehensive performance metrics..."),{agentMetrics:{totalAgents:0,activeAgents:0,topPerformers:[],averageRating:0,averageResponseTime:0},transactionMetrics:{totalTransactions:0n,dailyVolume:0n,successRate:0,averageValue:0n,growthRate:0},revenueMetrics:{totalRevenue:0n,dailyRevenue:0n,revenuePerAgent:0n,profitMargin:0,growthTrend:2}}}async generateReport(e,t,n=false){return console.log("\u{1F4CB} Generating analytics report..."),console.log(` Period: ${e} to ${t}`),console.log(` Include Agent Details: ${n}`),{period:{start:e,end:t},summary:await this.getPerformanceMetrics(),trends:[],topPerformers:[],recommendations:["Increase agent utilization rates through better matching algorithms","Implement performance incentives for top-rated agents","Optimize response times with automated workflows"]}}validateCreateDashboardParams(e){if(e.metricTypes.length===0)throw new Error("At least one metric type is required");if(e.metricTypes.length>20)throw new Error("Cannot track more than 20 metric types");let t=["hourly","daily","weekly","monthly"];if(!t.includes(e.reportingFrequency))throw new Error(`Reporting frequency must be one of: ${t.join(", ")}`)}validateUpdateDashboardParams(e){if(e.successRate<0||e.successRate>1)throw new Error("Success rate must be between 0 and 1");if(e.customerRating<0||e.customerRating>5)throw new Error("Customer rating must be between 0 and 5");if(e.utilizationRate<0||e.utilizationRate>1)throw new Error("Utilization rate must be between 0 and 1");if(e.averageResponseTime<0)throw new Error("Average response time cannot be negative")}validateCreateMarketAnalyticsParams(e){if(e.trackingPeriod<3600n)throw new Error("Tracking period must be at least 1 hour");if(e.marketSegment!==void 0&&e.marketSegment.trim().length===0)throw new Error("Market segment cannot be empty if provided");if(e.metrics!==void 0&&e.metrics.length===0)throw new Error("At least one metric is required if metrics array is provided")}validateUpdateMarketAnalyticsParams(e){if(e.totalTransactions<0n)throw new Error("Total transactions cannot be negative");if(e.totalRevenue<0n)throw new Error("Total revenue cannot be negative");if(e.activeAgents<0)throw new Error("Active agents count cannot be negative")}validateAddTopAgentParams(e){if(e.performanceScore<0||e.performanceScore>100)throw new Error("Performance score must be between 0 and 100");if(e.rank<1)throw new Error("Rank must be 1 or higher");if(!e.category||e.category.trim().length===0)throw new Error("Category is required")}calculatePerformanceGrade(e,t,n){let r=e*.4+t/5*.3+n*.3;return r>=.9?"A+":r>=.8?"A":r>=.7?"B":r>=.6?"C":"D"}determineTrendDirection(e){if(e.previousMetrics){let t=e.successRate,r=e.previousMetrics.successRate;return t>r+.05?0:t<r-.05?1:2}return 3}async deriveUserRegistry(e){let{deriveUserRegistryPda:t}=await import('./pda-2GUWRQ5G.js');return t(this.config.programId,e.address)}async deriveMarketAnalyticsPda(){let{findProgramDerivedAddress:e}=await import('./pda-2GUWRQ5G.js'),[t]=await e(["market_analytics"],this.config.programId);return t}};var de=class extends a{constructor(e){super(e);}async generateReport(e,t,n){console.log("\u{1F4CB} Generating compliance report..."),console.log(` Report ID: ${n.reportId}`),console.log(` Type: ${n.reportType}`),console.log(` Period: ${n.startPeriod} to ${n.endPeriod}`),console.log(` Jurisdiction: ${n.jurisdiction}`),this.validateGenerateReportParams(n);let r=Rf({report:t,auditTrail:await this.deriveAuditTrailPda(),authority:e,systemProgram:a$2,reportId:n.reportId,reportType:n.reportType,dateRangeStart:n.startPeriod,dateRangeEnd:n.endPeriod}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Compliance report generated with signature: ${i}`),i}async initializeAuditTrail(e,t,n){console.log("\u{1F4CA} Initializing audit trail..."),console.log(` Audit ID: ${n.auditId}`),console.log(` Entity ID: ${n.entityId}`),console.log(` Compliance Level: ${n.complianceLevel}`),this.validateInitializeAuditParams(n);let r=Zf({auditTrail:t,entity:n.entityId,authority:e,systemProgram:a$2,entityType:"Agent",config:{maxEntries:1e4,retentionPeriod:n.retentionPeriod,autoArchive:true,reportingFrequency:2,approvalLevels:[{actionType:20,requiredApprovers:[e.address],minApprovals:1,approvalTimeout:86400n}],encryptionRequired:true,backupFrequency:1}}),i=await this.sendTransaction([r],[e]);return console.log(`\u2705 Audit trail initialized with signature: ${i}`),i}async performKycVerification(e,t){console.log("\u{1F50D} Performing KYC verification..."),console.log(` User ID: ${t.userId}`),console.log(` Document Type: ${t.documentType}`),console.log(` Verification Level: ${t.verificationLevel}`),console.log(` Jurisdiction: ${t.jurisdiction}`),this.validateKycParams(t);try{await this.deriveAuditTrailPda();let n={status:"Pending",riskScore:this.calculateKycRiskScore(t),documentVerified:!1,biometricMatched:!1};throw console.log(`\u2705 KYC verification initiated: ${n.status}`),console.log("Note: External KYC provider integration required for completion"),new Error("KYC verification requires integration with external compliance providers")}catch(n){throw console.error("KYC verification failed:",n),n}}async performAmlScreening(e,t){console.log("\u{1F6A8} Performing AML screening..."),console.log(` Transaction ID: ${t.transactionId}`),console.log(` Parties: ${t.parties.length} entities`),console.log(` Amount: ${t.transactionAmount} lamports`),console.log(` Initial Risk Score: ${t.riskScore}`),this.validateAmlParams(t);let n={cleared:t.riskScore<70,riskScore:t.riskScore,watchlistMatches:[],flaggedReasons:t.riskScore>70?["High risk score"]:[],requiresManualReview:t.riskScore>90};return console.log(`\u2705 AML screening completed: ${n.cleared?"Cleared":"Flagged"}`),{screeningResult:n}}async recordDataConsent(e,t,n,r){console.log("\u{1F4DD} Recording data consent..."),console.log(` User: ${e}`),console.log(` Consent Types: ${t.join(", ")}`),console.log(` Purposes: ${n.join(", ")}`);let i=BigInt(Math.floor(Date.now()/1e3));return {consentId:`consent_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,recordedAt:i,validUntil:r}}async processDataSubjectRequest(e,t,n){console.log("\u{1F4CB} Processing data subject request..."),console.log(` Request Type: ${e}`),console.log(` Data Subject: ${t}`),console.log(` Request Details: ${n}`);let r=`dsr_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s=BigInt(Math.floor(Date.now()/1e3))+BigInt(720*3600);return {requestId:r,status:"received",estimatedCompletion:s,dataPackage:void 0}}async getComplianceMetrics(){return console.log("\u{1F4CA} Generating compliance metrics..."),{kycMetrics:{totalUsers:0,verifiedUsers:0,verificationRate:0,pendingVerifications:0,expiredVerifications:0},amlMetrics:{totalTransactions:0n,screenedTransactions:0n,flaggedTransactions:0,falsePositives:0,riskScore:0},privacyMetrics:{dataSubjects:0,consentGranted:0,consentWithdrawn:0,dataRetentionCompliance:0,breachIncidents:0},regulatoryMetrics:{reportingCompliance:0,auditTrailIntegrity:0,crossBorderCompliance:0,sanctionsScreening:0}}}async checkComplianceStatus(e,t){return console.log("\u{1F50D} Checking compliance status..."),console.log(` Entity: ${e}`),console.log(` Jurisdiction: ${t}`),{overallStatus:"Compliant",kycStatus:"Verified",amlStatus:"Cleared",privacyStatus:"Compliant",auditStatus:"Current",riskScore:25,recommendations:["Schedule quarterly compliance review","Update privacy policy for new jurisdiction requirements","Enhance transaction monitoring thresholds"],nextReviewDate:BigInt(Math.floor(Date.now()/1e3)+7776e3)}}validateGenerateReportParams(e){if(e.startPeriod>=e.endPeriod)throw new Error("Start period must be before end period");let t=BigInt(365*24*3600);if(e.endPeriod-e.startPeriod>t)throw new Error("Report period cannot exceed 1 year")}validateInitializeAuditParams(e){let t=["Basic","Standard","Enhanced","Premium"];if(!t.includes(e.complianceLevel))throw new Error(`Compliance level must be one of: ${t.join(", ")}`);if(e.retentionPeriod<BigInt(365*24*3600))throw new Error("Retention period must be at least 1 year")}validateKycParams(e){let t=["passport","drivers_license","national_id","utility_bill"];if(!t.includes(e.documentType))throw new Error(`Document type must be one of: ${t.join(", ")}`);if(e.documentHash.length<32)throw new Error("Document hash must be at least 32 characters")}validateAmlParams(e){if(e.parties.length===0)throw new Error("At least one party is required for AML screening");if(e.riskScore<0||e.riskScore>100)throw new Error("Risk score must be between 0 and 100");if(e.transactionAmount<=0n)throw new Error("Transaction amount must be greater than 0")}calculateKycRiskScore(e){let t=0;switch(e.verificationLevel){case "Basic":t+=30;break;case "Enhanced":t+=15;break;case "Premium":t+=5;break}switch(e.documentType){case "passport":t+=5;break;case "drivers_license":t+=10;break;case "national_id":t+=8;break;case "utility_bill":t+=20;break}return Math.min(t,100)}async deriveAuditTrailPda(){let{findProgramDerivedAddress:e}=await import('./pda-2GUWRQ5G.js'),[t]=await e(["audit_trail"],this.config.programId);return t}};var Se=class extends a{ipfsUtils=null;constructor(e){super(e),e.ipfsConfig&&(this.ipfsUtils=f(e.ipfsConfig));}configureIPFS(e){this.ipfsUtils=f(e);}async create(e,t){let n="public";t.visibility?n=t.visibility:t.isPublic!==void 0&&(n=t.isPublic?"public":"private");let r=t.participants??[];if(r.length===0&&(r=[e.address]),r.length>10)throw new Error(`Too many participants (${r.length}). Maximum allowed: 10`);let i=`channel_${Date.now()}_${Math.floor(Math.random()*1e3)}`,s=await this.deriveChannelPda(e.address,i),o=n==="private"?3:2;t.channelType!==void 0&&(o=t.channelType),console.log("\u{1F50D} Debug - Channel creation params:"),console.log(` Channel ID: ${i}`),console.log(` Visibility: ${n}`),console.log(` Participants: ${r.length}`),console.log(` Channel Type: ${o}`);let a=rb({channel:s,creator:e,channelId:BigInt(i.replace(/[^0-9]/g,"")),participants:r,channelType:o,isPrivate:n==="private"}),l=await this.sendTransaction([a],[e]);return {channelId:s,signature:l}}async sendMessage(e,t,n,r){let i;typeof n=="string"?i={channelId:t,content:n,messageType:0,attachments:[]}:i=n;let s=i.content,o=i.ipfsConfig?f(i.ipfsConfig):this.ipfsUtils;try{let p=new TextEncoder().encode(i.content).length;if((i.forceIPFS??p>500)&&o){console.log(`\u{1F4E4} Storing large message content (${p} bytes) on IPFS...`);let b={content:i.content,messageType:i.messageType??0,attachments:i.attachments??[],channelId:t,sender:e.address,timestamp:new Date().toISOString()},h=await o.storeChannelMessage(b,{filename:`message-${Date.now()}.json`});h.useIpfs&&h.ipfsMetadata&&(s=JSON.stringify({type:"ipfs_reference",ipfsHash:h.ipfsMetadata.ipfsHash,ipfsUri:h.uri,originalSize:h.size,contentPreview:i.content.substring(0,100)+(i.content.length>100?"...":""),uploadedAt:h.ipfsMetadata.uploadedAt}),console.log(`\u{1F310} Message content stored on IPFS: ${h.ipfsMetadata.ipfsHash}`));}}catch(p){console.warn("\u26A0\uFE0F IPFS storage failed for message, using original content:",p instanceof Error?p.message:String(p));}let a=await this.getChannel(t);if(!a)throw new Error("Channel not found");let l=Number(a.messageCount),d=new Uint8Array(8);new DataView(d.buffer).setBigUint64(0,BigInt(l),true);let g=await getProgramDerivedAddress({programAddress:this.config.programId,seeds:[new TextEncoder().encode("message"),getAddressEncoder().encode(t),d]}),m=$j({channel:t,sender:e,message:g[0],content:s,messageType:i.messageType??0,isEncrypted:false});return this.sendTransaction([m],[e])}async listByParticipant(e){return (await this.getDecodedProgramAccounts("getChannelDecoder")).filter(({data:n})=>n.participants.some(r=>r.toString()===e.participant.toString())).map(({address:n,data:r})=>({address:n,data:r,participantCount:r.participants.length,messageCount:Number(r.messageCount),lastActivity:BigInt(r.lastActivity)}))}async getChannel(e){return this.getDecodedAccount(e,"getChannelDecoder")}async listPublicChannels(e=50){return (await this.getDecodedProgramAccounts("getChannelDecoder")).filter(({data:n})=>!n.isPrivate).slice(0,e).map(({address:n,data:r})=>({address:n,data:r,participantCount:r.participants.length,messageCount:Number(r.messageCount),lastActivity:BigInt(r.lastActivity)}))}async getChannelMessages(e,t){return []}async resolveMessageContent(e){try{let t=JSON.parse(e);if(b$4(t)){if(!this.ipfsUtils)throw new Error("IPFS utils not configured but message requires IPFS retrieval");return console.log(`\u{1F4E5} Retrieving message content from IPFS: ${t.ipfsHash}`),{resolvedContent:(await this.ipfsUtils.retrieveChannelMessage(t.ipfsUri)).content,isIPFS:!0,metadata:{ipfsHash:t.ipfsHash,originalSize:t.originalSize,contentPreview:t.contentPreview,uploadedAt:t.uploadedAt}}}}catch(t){}return {resolvedContent:e,isIPFS:false}}async sendMessageWithAttachments(e,t,n,r,i){let s=i?.ipfsConfig?f(i.ipfsConfig):this.ipfsUtils;if(!s)throw new Error("IPFS configuration required for file attachments");console.log(`\u{1F4CE} Uploading ${r.length} attachments to IPFS...`);let o=await Promise.allSettled(r.map(async d=>{let u=await s.storeFileAttachment(d.content,d.filename,d.contentType);return {filename:d.filename,contentType:d.contentType,ipfsHash:u.ipfsMetadata?.ipfsHash??"",ipfsUri:u.uri,size:u.size}})),a=o.filter(d=>d.status==="fulfilled").map(d=>d.value),l=o.length-a.length;return l>0&&console.warn(`\u26A0\uFE0F ${l} attachments failed to upload`),this.sendMessage(e,t,{channelId:t,content:n,messageType:i?.messageType??0,attachments:a.map(d=>d.ipfsUri),ipfsConfig:i?.ipfsConfig,forceIPFS:true})}async deriveChannelPda(e,t){let{getProgramDerivedAddress:n,getAddressEncoder:r}=await import('@solana/kit'),i=BigInt(t.replace(/[^0-9]/g,"")),s=new Uint8Array(8);new DataView(s.buffer).setBigUint64(0,i,true);let[a]=await n({programAddress:this.programId,seeds:[new TextEncoder().encode("channel"),r().encode(e),s]});return a}};var Te=class extends a{constructor(e){super(e);}async createWorkOrder(e){let t=BigInt(Date.now()),n=this.config.programId;if(!n)throw new Error("Program ID is required");let[r]=await q(e.client.address,t,n),i;if(e.requiresVerification!==false&&([i]=await s$2(r,n)),e.metadata||e.milestones){let a=new c$1(this.config.ipfsConfig??{provider:{name:"test"}}),l={...e.metadata,milestones:e.milestones,createdAt:new Date().toISOString(),version:"1.0"};await a.upload(JSON.stringify(l),{contentType:"application/json"});}let s=md({workOrder:r,client:e.client,orderId:t,provider:e.provider,title:e.title,description:e.description,requirements:e.requirements,paymentAmount:e.paymentAmount,paymentToken:e.paymentToken,deadline:e.deadline});return {signature:await this.executeInstruction(()=>s,e.client,"work order creation"),workOrderAddress:r,escrowAddress:i}}async submitWorkDelivery(e){let t=this.config.programId;if(!t)throw new Error("Program ID is required");let[n]=await r(e.workOrderAddress,t),r$1=e.ipfsHash??"";if(!r$1&&e.content){let u=new c$1(this.config.ipfsConfig??{provider:{name:"test"}}),g=typeof e.content=="string"?e.content:JSON.stringify(e.content),m=await u.upload(g);m.success&&m.data&&(r$1=m.data.hash);}if(!r$1&&!e.metadataUri)throw new Error("Either IPFS hash or metadata URI must be provided");let i={deliveryNotes:e.deliveryNotes,milestoneIndex:e.milestoneIndex,submittedAt:new Date().toISOString()},o=await new c$1(this.config.ipfsConfig??{provider:{name:"test"}}).upload(JSON.stringify(i),{contentType:"application/json"}),a=e.metadataUri??"";!a&&o.success&&o.data&&(a=o.data.uri);let l=xk({workDelivery:n,workOrder:e.workOrderAddress,provider:e.provider,deliverables:e.deliverables,ipfsHash:r$1,metadataUri:a});return {signature:await this.executeInstruction(()=>l,e.provider,"work delivery submission"),workDeliveryAddress:n,ipfsHash:r$1}}async verifyWorkDelivery(e){let t={rating:e.rating??5,verificationNotes:e.verificationNotes,verifiedAt:new Date().toISOString()},r=await new c$1(this.config.ipfsConfig??{provider:{name:"test"}}).upload(JSON.stringify(t),{contentType:"application/json"}),i=r.success&&r.data?r.data.hash:"",s=gm({workOrder:e.workOrderAddress,workDelivery:e.workDeliveryAddress,client:e.client,verificationNotes:`${e.verificationNotes??""} | IPFS: ${i}`}),o=await this.executeInstruction(()=>s,e.client,"work delivery verification"),a=false;if(e.releasePayment)try{let{fetchWorkOrder:l}=await import('./accounts-IUZMPYVE.js'),d=await l(this.config.rpc,e.workOrderAddress),u=this.config.programId;if(!u)throw new Error("Program ID is required for payment release");let[g]=await s$2(e.workOrderAddress,u),{EscrowInstructions:m}=await import('./EscrowInstructions-4P3H6ETO.js'),p=new m(this.config);await p.completeEscrow({signer:e.client,escrowAddress:g}),await p.processEscrowPayment({escrowAddress:g,workOrder:e.workOrderAddress,paymentToken:d.data.paymentToken,signer:e.client}),a=!0,console.log(`\u2705 Payment released for work order: ${e.workOrderAddress}`);}catch(l){console.error("\u274C Failed to release payment:",l);let{GhostSpeakSDKError:d}=await import('./enhanced-client-errors-W22U3LNH.js');throw l instanceof Error?new d("payment release during work verification",l,"process_escrow_payment"):l}return {signature:o,paymentReleased:a}}async rejectWorkDelivery(e){let t={reason:e.rejectionReason,requestedChanges:e.requestedChanges??[],allowResubmission:e.allowResubmission!==false,rejectedAt:new Date().toISOString()};await new c$1(this.config.ipfsConfig??{provider:{name:"test"}}).upload(JSON.stringify(t),{contentType:"application/json"});let r=pj({workOrder:e.workOrderAddress,workDelivery:e.workDeliveryAddress,client:e.client,rejectionReason:e.rejectionReason,requestedChanges:e.requestedChanges??null}),i=await this.executeInstruction(()=>r,e.client,"work delivery rejection"),s=false;return e.triggerDispute&&(s=true),{signature:i,disputeCreated:s}}async getWorkOrderSummary(e,t){let{fetchWorkOrder:n}=await import('./accounts-IUZMPYVE.js'),r=await n(this.config.rpc,e),i=Math.floor(Date.now()/1e3),s=Math.max(0,Math.ceil((Number(r.data.deadline)-i)/86400)),o=0,a=0,l=t?.length??0;if(t&&t.length>0){let m=await this.getMilestoneStatus(e,t);o=m.progressPercentage,a=m.completedMilestones;}else switch(r.data.status){case 0:o=0;break;case 1:o=10;break;case 3:o=25;break;case 2:o=75;break;case 4:o=90;break;case 5:o=100;break;case 6:o=0;break}let d=this.getDeliveryCountFromStatus(r.data.status),u=0n;if(t&&t.length>0){let m=this.calculateMilestonePayments(r.data.paymentAmount,t);m.isValid&&(u=m.milestonePayments.slice(0,a).reduce((p,f)=>p+f,0n));}else u=r.data.status===5?r.data.paymentAmount:0n;let g=r.data.paymentAmount-u;return {status:r.data.status,progressPercentage:o,completedMilestones:a,totalMilestones:l,paymentReleased:u,paymentRemaining:g,daysUntilDeadline:s,deliveryCount:d}}getDeliveryCountFromStatus(e){switch(e){case 2:case 4:case 5:return 1;case 3:return 0;default:return 0}}async updateWorkOrderStatus(e,t,n,r){let{fetchWorkOrder:i}=await import('./accounts-IUZMPYVE.js'),o=(await i(this.config.rpc,e)).data.status;if(!this.isValidStatusTransition(o,t))throw new Error(`Invalid status transition: ${o} -> ${t}`);let l={previousStatus:Lo[o],newStatus:Lo[t],updatedAt:new Date().toISOString(),updatedBy:n.address,reason:r?.reason,...r?.metadata},u=await new c$1(this.config.ipfsConfig??{provider:{name:"test"}}).upload(JSON.stringify(l),{contentType:"application/json"});throw console.log(`\u{1F4DD} Work order status update: ${Lo[o]} -> ${Lo[t]}`),u.success&&u.data&&console.log(` Metadata stored: ${u.data.hash}`),new Error("updateWorkOrderStatus instruction not yet implemented in the Rust program. Status transitions must be handled through other instructions like submitWorkDelivery, verifyWorkDelivery, or rejectWorkDelivery which automatically update the work order status.")}isValidStatusTransition(e,t){return {0:[1,6],1:[3,6],3:[2,6],2:[4,3],4:[5,3],5:[],6:[]}[e].includes(t)}async canVerifyWorkOrder(e){try{let t=await this.getWorkOrderSummary(e);return t.status!==2?{canVerify:!1,reason:"Work order must be in Submitted status"}:t.deliveryCount===0?{canVerify:!1,reason:"No work delivery submitted yet"}:{canVerify:!0}}catch{return {canVerify:false,reason:"Failed to fetch work order status"}}}calculateMilestonePayments(e,t){let n=t.reduce((s,o)=>s+o.paymentPercentage,0);if(n!==100)return {milestonePayments:[],isValid:false,error:`Milestone percentages must sum to 100, got ${n}`};let r=t.map(s=>e*BigInt(s.paymentPercentage)/100n),i=r.reduce((s,o)=>s+o,0n);if(i!==e){let s=e-i;r[r.length-1]+=s;}return {milestonePayments:r,isValid:true}}async completeMilestone(e){if(e.milestoneIndex>=e.milestones.length)throw new Error(`Invalid milestone index: ${e.milestoneIndex}`);let t=this.calculateMilestonePayments(e.totalAmount,e.milestones);if(!t.isValid)throw new Error(`Invalid milestone configuration: ${t.error}`);let n=t.milestonePayments[e.milestoneIndex],r=e.milestones[e.milestoneIndex],i=`Milestone ${e.milestoneIndex+1} completed: ${r.title}. ${e.verificationNotes??""}`,s=await this.verifyWorkDelivery({client:e.client,workOrderAddress:e.workOrderAddress,workDeliveryAddress:e.workDeliveryAddress,verificationNotes:i,rating:e.rating,releasePayment:true}),o=e.milestoneIndex+1,a=t.milestonePayments.slice(0,o).reduce((d,u)=>d+u,0n),l=e.totalAmount-a;return console.log(`\u2705 Milestone ${e.milestoneIndex+1} completed:`),console.log(` Title: ${r.title}`),console.log(` Payment: ${n}`),console.log(` Remaining: ${l}`),{signature:s.signature,paymentAmount:n,paymentReleased:s.paymentReleased,remainingAmount:l}}async getMilestoneStatus(e,t){let{fetchWorkOrder:n}=await import('./accounts-IUZMPYVE.js'),r=await n(this.config.rpc,e),i=0;switch(r.data.status){case 2:case 4:i=Math.floor(t.length*.5);break;case 5:i=t.length;break;default:i=0;}let s=t.length>0?i/t.length*100:0,o=this.calculateMilestonePayments(r.data.paymentAmount,t),a=o.isValid?o.milestonePayments.slice(0,i).reduce((g,m)=>g+m,0n):0n,l=r.data.paymentAmount-a,d=i<t.length?t[i]:void 0,u=d?.expectedDate;return {completedMilestones:i,currentMilestone:d,nextDeadline:u,progressPercentage:s,paymentsReleased:a,remainingPayments:l}}};var Re=class{fraudPatterns=[];constructor(){this.initializeFraudPatterns();}initializeFraudPatterns(){this.fraudPatterns=[{patternId:"sudden_spike",description:"Sudden spike in reputation without corresponding activity",riskScore:80,detect:e=>{if(e.performanceHistory.length<2)return false;let t=e.performanceHistory[e.performanceHistory.length-1],n=e.performanceHistory[e.performanceHistory.length-2];return t.score-n.score>2e3&&t.jobsCompleted===n.jobsCompleted}},{patternId:"perfect_scores_only",description:"All jobs have perfect scores (potential manipulation)",riskScore:60,detect:e=>{let t=e.performanceHistory.slice(-10);return t.length>=5&&t.every(n=>n.avgQuality===100)}},{patternId:"rapid_category_switching",description:"Rapid switching between unrelated categories",riskScore:40,detect:e=>{if(e.categoryReputations.length<5)return false;let t=e.categoryReputations.sort((r,i)=>i.lastActivity-r.lastActivity).slice(0,5);return (Date.now()-t[4].lastActivity)/(1e3*60*60*24)<7}},{patternId:"dispute_pattern",description:"High dispute rate with suspicious resolution pattern",riskScore:70,detect:e=>{if(e.totalJobsCompleted<10)return false;let t=e.disputesAgainst/e.totalJobsCompleted,n=e.disputesResolved/Math.max(1,e.disputesAgainst);return t>.3&&n>.9}},{patternId:"time_manipulation",description:"Completion times significantly below expected",riskScore:50,detect:(e,t)=>t.actualDuration<t.expectedDuration*.1}];}calculateReputation(e,t){let n=this.applyTimeDecay(e),r=this.calculateWeightedScore(n.factors,t),i=this.updateCategoryReputation(n.categoryReputations,t,r),s=this.calculateOverallScore(i.categories),o=this.getTierFromScore(s),a=this.checkBadgeAchievements(n,t,s),l=this.detectFraud(n,t);return {overallScore:s,jobScore:r,categoryScore:i.categoryScore,tier:o,newBadges:a,fraudDetected:l.detected,fraudRiskScore:l.riskScore}}applyTimeDecay(e){let t=Date.now()/1e3,n=(t-e.lastUpdated)/86400;if(n<=0)return e;let r=a$3.REPUTATION_DECAY_RATE_BPS*n,i=Math.max(0,1e4-r)/1e4,s=Math.floor(e.overallScore*i),o=e.categoryReputations.map(a=>{let l=(t-a.lastActivity)/86400,d=a$3.REPUTATION_DECAY_RATE_BPS*l,u=Math.max(0,1e4-d)/1e4;return {...a,score:Math.floor(a.score*u)}});return {...e,overallScore:s,categoryReputations:o}}calculateWeightedScore(e,t){if(e.completionWeight+e.qualityWeight+e.timelinessWeight+e.satisfactionWeight+e.disputeWeight!==100)throw new Error("Reputation factors must sum to 100");let r=t.completed?a$3.MAX_REPUTATION_SCORE:0,i=t.qualityRating*a$3.MAX_REPUTATION_SCORE/100,s=this.calculateTimelinessScore(t.expectedDuration,t.actualDuration),o=t.clientSatisfaction*a$3.MAX_REPUTATION_SCORE/100,a=this.calculateDisputeScore(t),l=(r*e.completionWeight+i*e.qualityWeight+s*e.timelinessWeight+o*e.satisfactionWeight+a*e.disputeWeight)/100;return Math.min(l,a$3.MAX_REPUTATION_SCORE)}calculateTimelinessScore(e,t){if(t<=e)return a$3.MAX_REPUTATION_SCORE;let n=(t-e)*1e4/e;return n>5e3?0:a$3.MAX_REPUTATION_SCORE-a$3.MAX_REPUTATION_SCORE*n/1e4}calculateDisputeScore(e){return e.hadDispute?e.disputeResolvedFavorably?a$3.MAX_REPUTATION_SCORE/2:0:a$3.MAX_REPUTATION_SCORE}updateCategoryReputation(e,t,n){let r=e.findIndex(i=>i.category===t.category);if(r!==-1){let i=e[r],s={...i,completedJobs:i.completedJobs+1,qualitySum:i.qualitySum+t.qualityRating,qualityCount:i.qualityCount+1,totalEarnings:i.totalEarnings+t.paymentAmount,lastActivity:Date.now()/1e3,score:Math.floor((i.score*7+n*3)/10),avgCompletionTime:Math.floor((i.avgCompletionTime*i.completedJobs+t.actualDuration)/(i.completedJobs+1))},o=[...e];return o[r]=s,{categories:o,categoryScore:s.score}}else {if(e.length>=a$3.MAX_REPUTATION_CATEGORIES)throw new Error("Maximum reputation categories reached");let i={category:t.category,score:n,completedJobs:1,avgCompletionTime:t.actualDuration,qualitySum:t.qualityRating,qualityCount:1,lastActivity:Date.now()/1e3,totalEarnings:t.paymentAmount};return {categories:[...e,i],categoryScore:n}}}calculateOverallScore(e){if(e.length===0)return 5e3;let t=0,n=0;for(let r of e){let i=r.completedJobs;t+=r.score*i,n+=i;}return n>0?Math.floor(t/n):5e3}getTierFromScore(e){return e>=a$3.PLATINUM_TIER_THRESHOLD?"Platinum":e>=a$3.GOLD_TIER_THRESHOLD?"Gold":e>=a$3.SILVER_TIER_THRESHOLD?"Silver":e>=a$3.BRONZE_TIER_THRESHOLD?"Bronze":"None"}checkBadgeAchievements(e,t,n){let r=[],i=new Set(e.badges.map(o=>o.badgeType)),s=e.totalJobsCompleted+(t.completed?1:0);return !i.has("FirstJob")&&s>=1&&r.push("FirstJob"),!i.has("TenJobs")&&s>=10&&r.push("TenJobs"),!i.has("HundredJobs")&&s>=100&&r.push("HundredJobs"),!i.has("ThousandJobs")&&s>=1e3&&r.push("ThousandJobs"),!i.has("PerfectRating")&&n>=9500&&r.push("PerfectRating"),!i.has("QuickResponder")&&e.avgResponseTime>0&&e.avgResponseTime<3600&&r.push("QuickResponder"),!i.has("DisputeResolver")&&e.disputesResolved>=5&&r.push("DisputeResolver"),i.has("CategoryExpert")||e.categoryReputations.some(a=>a.score>=9e3)&&r.push("CategoryExpert"),!i.has("CrossCategoryMaster")&&e.categoryReputations.length>=5&&r.push("CrossCategoryMaster"),r}detectFraud(e,t){let n=0,r=[];for(let s of this.fraudPatterns)s.detect(e,t)&&(n+=s.riskScore,r.push(s.patternId));let i=Math.min(100,n);return {detected:i>=50,riskScore:i,patterns:r}}createPerformanceSnapshot(e,t){let n=e.categoryReputations.length>0?e.categoryReputations.reduce((r,i)=>r+(i.qualityCount>0?i.qualitySum/i.qualityCount:0),0)/e.categoryReputations.length:0;return {timestamp:Date.now()/1e3,score:t,jobsCompleted:e.totalJobsCompleted,avgQuality:Math.floor(n)}}calculateSlashAmount(e,t){if(t>5e3)throw new Error("Slash percentage cannot exceed 50%");if(e<a$3.MIN_REPUTATION_FOR_SLASH)throw new Error("Reputation too low to slash");let n=Math.floor(e*t/1e4);return {newScore:Math.max(0,e-n),slashAmount:n}}calculateStakingBonus(e){return Math.min(500,Math.floor(e/1e3))}};var ue=class{constructor(e){this.config=e;this.rpc=e.rpc,this.programId=e.programId??address$1("GHSTwJYnMW6V8piJgW8yY8ZUKqQzFQkKKJmLPWUKvdFu"),this.calculator=new Re,this.typedRpc=e.rpc;}rpc;programId;calculator;typedRpc;async initializeReputation(e){let{agentId:t,signer:n,factors:r=this.getDefaultFactors()}=e;try{if(r.completionWeight+r.qualityWeight+r.timelinessWeight+r.satisfactionWeight+r.disputeWeight!==100)throw new Error("Reputation factors must sum to 100");let s=al({agentId:t,reputationScore:50,signer:n,agentAccount:await this.getAgentPDA(t,n.address)}),a=(await this.rpc.getLatestBlockhash().send()).value,{pipe:l,createTransactionMessage:d,appendTransactionMessageInstructions:u,setTransactionMessageFeePayerSigner:g,setTransactionMessageLifetimeUsingBlockhash:m,signTransactionMessageWithSigners:p}=await import('@solana/kit'),f=l(d({version:0}),y=>u([s],y),y=>g(n,y),y=>m(a,y)),b=await p(f),h=await this.rpc.sendTransaction(b,{encoding:"base64",commitment:"confirmed"}).send();await this.rpc.confirmTransaction({signature:h,blockhash:a.blockhash,lastValidBlockHeight:a.lastValidBlockHeight}).send();let A=await this.getReputationPDA(await this.getAgentPDA(t,n.address));return {signature:h,reputationAddress:A}}catch(i){throw f$1(i,"initializeReputation")}}async updateJobReputation(e){let{agentId:t,jobPerformance:n,signer:r}=e;try{let i=await this.getAgentPDA(t,r.address),s=await this.getReputationData(i),o=this.calculator.calculateReputation(s,n),a=al({agentId:t,reputationScore:Math.floor(o.overallScore/100),signer:r,agentAccount:i}),d=(await this.rpc.getLatestBlockhash().send()).value,{pipe:u,createTransactionMessage:g,appendTransactionMessageInstructions:m,setTransactionMessageFeePayerSigner:p,setTransactionMessageLifetimeUsingBlockhash:f,signTransactionMessageWithSigners:b}=await import('@solana/kit'),h=u(g({version:0}),R=>m([a],R),R=>p(r,R),R=>f(d,R)),A=await b(h),y=await this.rpc.sendTransaction(A,{encoding:"base64",commitment:"confirmed"}).send();return await this.rpc.confirmTransaction({signature:y,blockhash:d.blockhash,lastValidBlockHeight:d.lastValidBlockHeight}).send(),this.emitReputationUpdate({agent:i,previousScore:s.overallScore,newScore:o.overallScore,category:n.category,timestamp:Date.now()/1e3}),{signature:y,calculationResult:o}}catch(i){throw f$1(i,"updateJobReputation")}}async queryAgentsByReputation(e){try{let{getAgentDecoder:t,AGENT_DISCRIMINATOR:n}=await import('./agent-GZ2OES75.js'),r=await this.rpc.getProgramAccounts(this.programId,{encoding:"base64",commitment:"confirmed",filters:[{memcmp:{offset:0,bytes:Buffer.from(n).toString("base64")}}]}).send(),i=t(),s=[];for(let o of r)try{let a=i.decode(new Uint8Array(Buffer.from(o.account.data[0],"base64"))),l=await this.convertAgentToReputationData(o.pubkey,a);this.matchesReputationFilters(l,e)&&s.push({agent:o.pubkey,reputation:l});}catch{continue}return s.sort((o,a)=>a.reputation.overallScore-o.reputation.overallScore),e.limit!==void 0?s.slice(0,e.limit):s}catch(t){throw f$1(t,"queryAgentsByReputation")}}async getReputationData(e){try{let{getAgentDecoder:t}=await import('./agent-GZ2OES75.js'),n=await this.rpc.getAccountInfo(e,{encoding:"base64",commitment:"confirmed"}).send();if(!n.value)throw new Error(`Agent account not found: ${e}`);let i=t().decode(new Uint8Array(Buffer.from(n.value.data[0],"base64")));return await this.convertAgentToReputationData(e,i)}catch(t){throw f$1(t,"getReputationData")}}calculateHypotheticalReputation(e,t){return this.calculator.calculateReputation(e,t)}getTierFromScore(e){return e>=a$3.PLATINUM_TIER_THRESHOLD?"Platinum":e>=a$3.GOLD_TIER_THRESHOLD?"Gold":e>=a$3.SILVER_TIER_THRESHOLD?"Silver":e>=a$3.BRONZE_TIER_THRESHOLD?"Bronze":"None"}getBadgeRequirements(){return {FirstJob:"Complete your first job",TenJobs:"Complete 10 jobs",HundredJobs:"Complete 100 jobs",ThousandJobs:"Complete 1000 jobs",PerfectRating:"Achieve 95% overall reputation score",QuickResponder:"Maintain average response time under 1 hour",HighEarner:"Earn over 1000 SOL in total",DisputeResolver:"Successfully resolve 5 disputes",CategoryExpert:"Achieve 90% reputation in any category",CrossCategoryMaster:"Build reputation in 5 different categories"}}async getReputationAnalytics(){try{let e=await this.queryAgentsByReputation({});if(e.length===0)return {averageScore:5e3,tierDistribution:{None:100,Bronze:0,Silver:0,Gold:0,Platinum:0},topCategories:[]};let t=e.reduce((a,l)=>a+l.reputation.overallScore,0),n=Math.floor(t/e.length),r={None:0,Bronze:0,Silver:0,Gold:0,Platinum:0};e.forEach(a=>{r[a.reputation.tier]++;});let i=Object.fromEntries(Object.entries(r).map(([a,l])=>[a,Math.round(l/e.length*100)])),s=new Map;e.forEach(a=>{a.reputation.categoryReputations.forEach(l=>{let d=s.get(l.category)??0;s.set(l.category,d+l.completedJobs);});});let o=Array.from(s.entries()).map(([a,l])=>({category:a,jobCount:l})).sort((a,l)=>l.jobCount-a.jobCount).slice(0,10);return {averageScore:n,tierDistribution:i,topCategories:o}}catch(e){throw f$1(e,"getReputationAnalytics")}}async stakeReputation(e){let{agentId:t,amount:n,signer:r}=e;try{let i=await this.getAgentPDA(t,r.address),s=await this.getReputationData(i),o=this.calculator.calculateStakingBonus(n),a=s.stakedAmount+n,l=al({agentId:t,reputationScore:Math.min(1e4,s.overallScore+o),signer:r,agentAccount:i}),u=(await this.rpc.getLatestBlockhash().send()).value,{pipe:g,createTransactionMessage:m,appendTransactionMessageInstructions:p,setTransactionMessageFeePayerSigner:f,setTransactionMessageLifetimeUsingBlockhash:b,signTransactionMessageWithSigners:h}=await import('@solana/kit'),A=g(m({version:0}),k=>p([l],k),k=>f(r,k),k=>b(u,k)),y=await h(A),R=await this.rpc.sendTransaction(y,{encoding:"base64",commitment:"confirmed"}).send();return await this.rpc.confirmTransaction({signature:R,blockhash:u.blockhash,lastValidBlockHeight:u.lastValidBlockHeight}).send(),{signature:R,newStakedAmount:a}}catch(i){throw f$1(i,"stakeReputation")}}async slashReputation(e){let{agentId:t,slashPercentage:n,reason:r,authority:i}=e;try{let s=await this.getAgentPDA(t,i.address),o=await this.getReputationData(s),{newScore:a,slashAmount:l}=this.calculator.calculateSlashAmount(o.overallScore,n);console.warn(`Slashing reputation for agent ${t}: ${l} points for reason: ${r}`);let d=al({agentId:t,reputationScore:Math.floor(a/100),signer:i,agentAccount:s}),g=(await this.rpc.getLatestBlockhash().send()).value,{pipe:m,createTransactionMessage:p,appendTransactionMessageInstructions:f,setTransactionMessageFeePayerSigner:b,setTransactionMessageLifetimeUsingBlockhash:h,signTransactionMessageWithSigners:A}=await import('@solana/kit'),y=m(p({version:0}),x=>f([d],x),x=>b(i,x),x=>h(g,x)),R=await A(y),k=await this.rpc.sendTransaction(R,{encoding:"base64",commitment:"confirmed"}).send();return await this.rpc.confirmTransaction({signature:k,blockhash:g.blockhash,lastValidBlockHeight:g.lastValidBlockHeight}).send(),{signature:k,newScore:a}}catch(s){throw f$1(s,"slashReputation")}}async getAgentPDA(e,t){let{getProgramDerivedAddress:n,getAddressEncoder:r,getBytesEncoder:i}=await import('@solana/kit'),[s]=await n({programAddress:this.programId,seeds:[i().encode(new TextEncoder().encode("agent")),r().encode(t),i().encode(new TextEncoder().encode(e))]});return s}async getReputationPDA(e){let{getProgramDerivedAddress:t,getAddressEncoder:n,getBytesEncoder:r}=await import('@solana/kit'),[i]=await t({programAddress:this.programId,seeds:[r().encode(new TextEncoder().encode("reputation")),n().encode(e)]});return i}getDefaultFactors(){return {completionWeight:30,qualityWeight:25,timelinessWeight:20,satisfactionWeight:20,disputeWeight:5}}async convertAgentToReputationData(e,t){let n=t,r=(n.reputationScore??50)*100;return {agent:e,overallScore:r,tier:this.getTierFromScore(r),categoryReputations:[],stakedAmount:0,factors:this.getDefaultFactors(),totalJobsCompleted:Number(n.totalJobsCompleted??0),totalJobsFailed:await this.getFailedJobCount(e),avgResponseTime:0,disputesAgainst:await this.getDisputeCount(e),disputesResolved:await this.getResolvedDisputeCount(e),lastUpdated:Number(n.updatedAt??n.createdAt??Date.now()/1e3),createdAt:Number(n.createdAt??Date.now()/1e3),performanceHistory:[],badges:await this.calculateBadges(e,{reputationScore:r,totalJobsCompleted:Number(n.totalJobsCompleted??0),avgResponseTime:0,disputesResolved:await this.getResolvedDisputeCount(e)}),crossCategoryEnabled:false}}matchesReputationFilters(e,t){return !(t.minScore!==void 0&&e.overallScore<t.minScore||t.maxScore!==void 0&&e.overallScore>t.maxScore||t.tier!==void 0&&e.tier!==t.tier||t.category!==void 0&&!e.categoryReputations.some(r=>r.category===t.category)||t.minJobsCompleted!==void 0&&e.totalJobsCompleted<t.minJobsCompleted)}emitReputationUpdate(e){typeof globalThis<"u"&&"dispatchEvent"in globalThis&&globalThis.dispatchEvent(new CustomEvent("ghostspeak:reputation:update",{detail:e}));}async getFailedJobCount(e){try{let n=await new Connection(this.config.rpcEndpoint??"https://api.mainnet-beta.solana.com").getProgramAccounts(new PublicKey(this.programId),{filters:[{memcmp:{offset:40,bytes:new PublicKey(e).toBase58()}}]}),r=0,i=Uf();for(let s of n)try{i.decode(s.account.data).status===6&&r++;}catch{continue}return r}catch(t){return console.warn("Failed to get failed job count:",t),0}}async getDisputeCount(e){try{let n=await new Connection(this.config.rpcEndpoint??"https://api.mainnet-beta.solana.com").getProgramAccounts(new PublicKey(this.programId),{filters:[{memcmp:{offset:40,bytes:new PublicKey(e).toBase58()}}]}),r=0,i=Lb();for(let s of n)try{let o=i.decode(s.account.data);(o.status===2||o.status===3)&&r++;}catch{continue}return r}catch(t){return console.warn("Failed to get dispute count:",t),0}}async getResolvedDisputeCount(e){try{let n=await new Connection(this.config.rpcEndpoint??"https://api.mainnet-beta.solana.com").getProgramAccounts(new PublicKey(this.programId),{filters:[{memcmp:{offset:40,bytes:new PublicKey(e).toBase58()}}]}),r=0,i=Lb();for(let s of n)try{i.decode(s.account.data).status===3&&r++;}catch{continue}return r}catch(t){return console.warn("Failed to get resolved dispute count:",t),0}}async calculateBadges(e,t){let n=[],r=Math.floor(Date.now()/1e3);t.totalJobsCompleted>=1&&n.push({badgeType:"FirstJob",earnedAt:r,achievementValue:1}),t.totalJobsCompleted>=10&&n.push({badgeType:"TenJobs",earnedAt:r,achievementValue:10}),t.totalJobsCompleted>=100&&n.push({badgeType:"HundredJobs",earnedAt:r,achievementValue:100}),t.totalJobsCompleted>=1e3&&n.push({badgeType:"ThousandJobs",earnedAt:r,achievementValue:1e3}),t.reputationScore>=9500&&n.push({badgeType:"PerfectRating",earnedAt:r,achievementValue:t.reputationScore}),t.avgResponseTime>0&&t.avgResponseTime<3600&&n.push({badgeType:"QuickResponder",earnedAt:r,achievementValue:t.avgResponseTime}),t.disputesResolved>=5&&n.push({badgeType:"DisputeResolver",earnedAt:r,achievementValue:t.disputesResolved});try{let i=await this.getAgentTotalEarnings(e);i>=1000000000000n&&n.push({badgeType:"HighEarner",earnedAt:r,achievementValue:Number(i/1000000000n)});}catch{}return n}async getAgentTotalEarnings(e){try{let t=await this.typedRpc.getAccountInfo(e,{encoding:"base64"});if(!t.value)return 0n;let{getAgentDecoder:n}=await import('./agent-GZ2OES75.js');return n().decode(new Uint8Array(Buffer.from(t.value.data,"base64"))).totalEarnings}catch(t){return console.warn("Failed to get agent earnings:",t),0n}}};var lt=class c{config;agent;marketplace;escrow;a2a;auction;dispute;governance;bulkDeals;analytics;compliance;channel;workOrder;reputation;constructor(e){this.config={programId:a$1,commitment:"confirmed",...e},this.agent=new te(this.config),this.marketplace=new ne(this.config),this.escrow=new b$2(this.config),this.a2a=new re(this.config),this.auction=new se(this.config),this.dispute=new oe(this.config),this.governance=new ae(this.config),this.bulkDeals=new ce(this.config),this.analytics=new le(this.config),this.compliance=new de(this.config),this.channel=new Se(this.config),this.workOrder=new Te(this.config),this.reputation=new ue(this.config);}static create(e,t){return new c({rpc:e,programId:t??a$1})}async registerAgent(e,t){return this.agent.register(e,t)}async getAgent(e){return this.agent.getAccount(e)}async createServiceListing(e,t,n,r,i){return this.marketplace.createServiceListing(e,t,n,r,i)}async createJobPosting(e,t,n){return this.marketplace.createJobPosting(t,{...n,signer:e})}async getServiceListings(){return this.marketplace.getServiceListings()}async getJobPostings(){return this.marketplace.getJobPostings()}async createEscrow(e,t){return this.escrow.create({...t,signer:e})}async getEscrow(e){return this.escrow.getAccount(e)}async createA2ASession(e,t){return this.a2a.createSession(e,t)}async sendA2AMessage(e,t){return this.a2a.sendMessage(e,t)}async getA2ASession(e){return this.a2a.getSession(e)}async getA2AMessages(e){return this.a2a.getMessages(e)}async fetchWorkOrder(e){return (await Xf(this.config.rpc,e)).data}async fetchWorkDelivery(e){return (await Nf(this.config.rpc,e)).data}};var ks=address("GssMyhkQPePLzByJsJadbQePZc6GtzGi22aQqW5opvUX");var dt={provider:{name:"test",endpoint:"http://localhost:8080"},gateways:["http://localhost:8080","https://test.ipfs.io"],autoPinning:true,sizeThreshold:400,maxRetries:2,retryDelay:500,enableCache:true,cacheTTL:6e4};function Ds(c){return {...dt,...c,provider:{...dt.provider,...c?.provider??{}}}}var O=class extends Error{constructor(t,n,r,i,s){super(n);this.type=t;this.provider=r;this.retryCount=i;this.originalError=s;this.name="IPFSOperationError";}},ut={maxRetries:3,baseDelay:1e3,maxDelay:3e4,backoffFactor:2,retryableErrors:["NETWORK_ERROR","TIMEOUT_ERROR","PROVIDER_ERROR"]},Ie=class{constructor(e=5,t=3e4){this.failureThreshold=e;this.recoveryTime=t;}failures=0;lastFailureTime=0;state="CLOSED";async execute(e){if(this.state==="OPEN")if(Date.now()-this.lastFailureTime>this.recoveryTime)this.state="HALF_OPEN";else throw new Error("Circuit breaker is OPEN - too many failures");try{let t=await e();return this.onSuccess(),t}catch(t){throw this.onFailure(),t}}onSuccess(){this.failures=0,this.state="CLOSED";}onFailure(){this.failures++,this.lastFailureTime=Date.now(),this.failures>=this.failureThreshold&&(this.state="OPEN");}getState(){return {state:this.state,failures:this.failures,lastFailureTime:this.lastFailureTime}}reset(){this.failures=0,this.lastFailureTime=0,this.state="CLOSED";}},Ce=class{constructor(e=ut){this.config=e;this.circuitBreaker=new Ie;}circuitBreaker;async execute(e,t){return this.circuitBreaker.execute(async()=>{let n;for(let r=0;r<=this.config.maxRetries;r++)try{let i=await e();return r>0&&console.log(`\u2705 Operation succeeded after ${r} retries${t?` (${t})`:""}`),i}catch(i){if(n=i instanceof Error?i:new Error(String(i)),r===this.config.maxRetries)break;if(!this.shouldRetry(n,r)){console.log(`\u274C Error not retryable${t?` (${t})`:""}:`,n.message);break}let o=this.calculateDelay(r);console.log(`\u23F3 Retrying in ${o}ms... (attempt ${r+1}/${this.config.maxRetries}${t?`, ${t}`:""})`),await new Promise(a=>setTimeout(a,o));}throw new O(this.categorizeError(n),`Operation failed after ${this.config.maxRetries+1} attempts${t?` (${t})`:""}: ${n.message}`,void 0,this.config.maxRetries)})}shouldRetry(e,t){if(t>=this.config.maxRetries)return false;let n=this.categorizeError(e);return this.config.retryableErrors.includes(n)}calculateDelay(e){let t=this.config.baseDelay*Math.pow(this.config.backoffFactor,e),n=Math.random()*.1*t;return Math.min(t+n,this.config.maxDelay)}categorizeError(e){let t=e.message.toLowerCase();return t.includes("timeout")?"TIMEOUT_ERROR":t.includes("network")?"NETWORK_ERROR":t.includes("unauthorized")?"AUTHENTICATION_FAILED":t.includes("quota")?"QUOTA_EXCEEDED":t.includes("invalid")&&t.includes("hash")?"INVALID_HASH":t.includes("too large")?"CONTENT_TOO_LARGE":"PROVIDER_ERROR"}getStats(){return {circuitBreakerState:this.circuitBreaker.getState(),config:this.config}}reset(){this.circuitBreaker.reset();}},ke=class{fallbackStrategies=new Map;constructor(){this.setupDefaultFallbacks();}setupDefaultFallbacks(){this.fallbackStrategies.set("UPLOAD_FAILED",async e=>{throw console.log("\u{1F504} Upload failed, attempting inline storage fallback..."),e}),this.fallbackStrategies.set("RETRIEVAL_FAILED",async e=>{throw console.log("\u{1F504} Retrieval failed, trying alternative gateways..."),e}),this.fallbackStrategies.set("QUOTA_EXCEEDED",async e=>{throw console.warn("\u26A0\uFE0F IPFS quota exceeded - consider upgrading plan or cleaning up old content"),e});}async handleError(e,t){let n=this.fallbackStrategies.get(e.type);if(n)try{return await n(e)}catch(r){console.warn("Fallback strategy also failed:",r instanceof Error?r.message:String(r));}if(t!==void 0)return console.log("Using provided fallback value"),t;throw e}registerFallback(e,t){this.fallbackStrategies.set(e,t);}},ge=class{retryHandler;fallbackHandler;constructor(e){this.retryHandler=new Ce({...ut,...e}),this.fallbackHandler=new ke;}async executeWithErrorHandling(e,t,n){try{return await this.retryHandler.execute(async()=>{let i=await e();if(!i.success&&i.error)throw new O(i.error,i.message??`IPFS operation failed: ${i.error}`);return i},t)}catch(r){let i=r instanceof O?r:new O("PROVIDER_ERROR",r instanceof Error?r.message:String(r));try{return {success:!0,data:await this.fallbackHandler.handleError(i,n),message:"Operation succeeded using fallback strategy"}}catch{return {success:false,error:i.type,message:i.message,duration:0}}}}registerFallback(e,t){this.fallbackHandler.registerFallback(e,t);}getStats(){return {retryStats:this.retryHandler.getStats(),registeredFallbacks:Array.from(this.fallbackHandler.fallbackStrategies.keys())}}reset(){this.retryHandler.reset();}};function Es(c){let e=new ge(c?.retryConfig);if(c?.customFallbacks)for(let{errorType:t,strategy:n}of c.customFallbacks)e.registerFallback(t,n);return e}function Ms(c){return c instanceof O}async function xs(c,e,t){return (t??new ge).executeWithErrorHandling(async()=>{try{return {success:!0,data:await c()}}catch(r){return {success:false,error:r instanceof O?r.type:"PROVIDER_ERROR",message:r instanceof Error?r.message:String(r)}}},e)}var De={pinataConfig:{provider:{name:"pinata",jwt:"your-pinata-jwt-token-here",endpoint:"https://api.pinata.cloud"},gateways:["https://gateway.pinata.cloud","https://ipfs.io"],autoPinning:true,sizeThreshold:800,maxRetries:3,retryDelay:1e3,enableCache:true,cacheTTL:3e5},localNodeConfig:{provider:{name:"ipfs-http-client",endpoint:"http://localhost:5001"},gateways:["http://localhost:8080","https://ipfs.io"],autoPinning:true,sizeThreshold:800},multiProviderConfig:{provider:{name:"pinata",jwt:"primary-pinata-jwt"},fallbackProviders:[{name:"ipfs-http-client",endpoint:"http://localhost:5001"}],gateways:["https://gateway.pinata.cloud","http://localhost:8080","https://ipfs.io"],sizeThreshold:500}};async function bn(c,e,t){console.log("\u{1F4DD} Example: Creating agent with IPFS metadata storage"),c.configureIPFS(t);let n=await c.create(e,{name:"Advanced AI Research Assistant",description:`This is a highly sophisticated AI agent designed for comprehensive research tasks.
2
- It specializes in data analysis, literature review, statistical modeling, and report generation.
3
-
4
- Key Features:
5
- - Advanced natural language processing capabilities
6
- - Statistical analysis and data visualization
7
- - Multi-language support (English, Spanish, French, German, Chinese, Japanese)
8
- - Integration with major academic databases and APIs
9
- - Real-time data processing and insights
10
- - Collaborative research workflows
11
- - Citation management and bibliography generation
12
- - Automated report formatting and publication-ready outputs
13
-
14
- Technical Specifications:
15
- - Model Architecture: Transformer-based with 175B parameters
16
- - Context Window: 32,000 tokens
17
- - Response Time: < 2 seconds average
18
- - Accuracy Rate: 97.3% on research tasks
19
- - Supported File Formats: PDF, DOCX, CSV, JSON, XML, BibTeX
20
- - API Integrations: PubMed, arXiv, Google Scholar, JSTOR, IEEE Xplore
21
-
22
- Use Cases:
23
- - Academic research and thesis writing
24
- - Market research and competitive analysis
25
- - Scientific literature reviews
26
- - Data analysis and statistical modeling
27
- - Patent research and IP analysis
28
- - Grant proposal writing
29
- - Systematic reviews and meta-analyses
30
-
31
- This extensive description would normally exceed Solana transaction limits,
32
- but with IPFS integration, it can be stored off-chain while maintaining
33
- full accessibility and integrity through the blockchain reference.`,category:"research",capabilities:["academic-research","data-analysis","statistical-modeling","literature-review","citation-management","multi-language-processing","report-generation","bibliography-creation","patent-analysis","market-research","meta-analysis","grant-writing","peer-review","research-methodology","quantitative-analysis","qualitative-analysis"],serviceEndpoint:"https://advanced-research-agent.example.com/api",forceIPFS:true});return console.log(`\u2705 Agent created with IPFS metadata: ${n}`),n}async function wn(c,e,t){console.log("\u{1F4E5} Example: Retrieving agent metadata from IPFS"),c.configureIPFS(t);let n=await c.getAgentWithMetadata(e);n?.metadata?(console.log("Agent Metadata:"),console.log(` Name: ${n.metadata.name}`),console.log(` Description: ${n.metadata.description?.substring(0,200)}...`),console.log(` Capabilities: ${n.metadata.capabilities?.join(", ")}`),console.log(` Service Endpoint: ${n.metadata.serviceEndpoint}`),console.log(` Created: ${n.metadata.createdAt}`)):console.log("No metadata found or failed to retrieve from IPFS");}async function Pn(c,e,t,n){console.log("\u{1F4E4} Example: Sending large message via IPFS"),c.configureIPFS(n);let i=await c.sendMessage(e,t,{channelId:t,content:`# Research Findings Report
34
-
35
- ## Executive Summary
36
- This comprehensive report presents the findings from our extensive research study on AI agent performance in decentralized systems. The study spanned 12 months and involved analysis of over 10,000 agent interactions across multiple blockchain networks.
37
-
38
- ## Methodology
39
- Our research employed a mixed-methods approach combining:
40
- - Quantitative analysis of transaction data
41
- - Qualitative assessment of agent behavior patterns
42
- - Performance benchmarking across different network conditions
43
- - User satisfaction surveys and feedback analysis
44
-
45
- ## Key Findings
46
-
47
- ### Performance Metrics
48
- 1. **Response Time**: Average response time decreased by 34% when using IPFS for large content storage
49
- 2. **Transaction Costs**: 67% reduction in gas fees for metadata-heavy operations
50
- 3. **Reliability**: 99.7% uptime achieved with proper IPFS redundancy
51
- 4. **Scalability**: System handled 50x increase in concurrent users without performance degradation
52
-
53
- ### Technical Insights
54
- - IPFS integration reduced on-chain storage requirements by 89%
55
- - Content deduplication saved approximately 2.3TB of redundant data
56
- - Gateway redundancy improved content availability to 99.97%
57
- - Automatic fallback mechanisms prevented data loss in 100% of tested scenarios
58
-
59
- ### User Experience Impact
60
- - Users reported 45% improvement in application responsiveness
61
- - Large file sharing became seamless with IPFS integration
62
- - Cross-platform compatibility improved significantly
63
- - Offline access capabilities enhanced user satisfaction
64
-
65
- ## Recommendations
66
- Based on our findings, we recommend:
67
- 1. Implementing IPFS as the default storage solution for content > 800 bytes
68
- 2. Establishing redundant gateway infrastructure for enterprise deployments
69
- 3. Adopting automated pinning strategies for critical content
70
- 4. Implementing content validation and integrity checking mechanisms
71
-
72
- ## Conclusion
73
- The integration of IPFS with blockchain-based AI agent systems represents a significant advancement in decentralized application architecture. The benefits in terms of performance, cost-efficiency, and user experience make it an essential component for next-generation dApps.
74
-
75
- This report demonstrates the type of large content that would traditionally be impossible to store on-chain but can now be seamlessly integrated using IPFS while maintaining blockchain security and transparency.`,messageType:0,attachments:[],ipfsConfig:n,forceIPFS:true});return console.log(`\u2705 Large message sent via IPFS: ${i}`),i}async function vn(c,e,t,n){console.log("\u{1F4CE} Example: Sending message with file attachments");let r=[{filename:"research-data.csv",content:new TextEncoder().encode(`Date,Agent,Performance,Cost
76
- 2024-01-01,Agent1,95.2,0.001
77
- 2024-01-02,Agent2,97.8,0.0008
78
- 2024-01-03,Agent1,96.1,0.0009`),contentType:"text/csv"},{filename:"analysis-notes.txt",content:"Initial analysis shows promising results. Performance metrics exceed baseline by 23%. Recommend continued monitoring and potential expansion of test parameters.",contentType:"text/plain"},{filename:"config.json",content:JSON.stringify({testParameters:{duration:"12 months",sampleSize:1e4,metrics:["response_time","accuracy","cost_efficiency"]},thresholds:{acceptable_response_time:2e3,minimum_accuracy:.95,max_cost_per_operation:.001}},null,2),contentType:"application/json"}],i=await c.sendMessageWithAttachments(e,t,"Please review the attached research data and analysis. The preliminary results look very promising!",r,{messageType:0,ipfsConfig:n});return console.log(`\u2705 Message with attachments sent: ${i}`),i}async function Bs(c,e,t){console.log("\u{1F4E5} Example: Resolving message content from IPFS"),c.configureIPFS(t);let n=await c.resolveMessageContent(e);n.isIPFS?(console.log("Message retrieved from IPFS:"),console.log(` IPFS Hash: ${n.metadata?.ipfsHash}`),console.log(` Original Size: ${n.metadata?.originalSize} bytes`),console.log(` Preview: ${n.metadata?.contentPreview}`),console.log(` Full Content: ${n.resolvedContent.substring(0,500)}...`)):(console.log("Message stored inline:"),console.log(` Content: ${n.resolvedContent}`));}async function Sn(c){console.log("\u{1F504} Example: Batch IPFS operations");let e=f(c),t=[{content:JSON.stringify({type:"agent_config",version:"1.0",settings:{maxRetries:3}}),type:"custom",filename:"agent-config.json"},{content:"This is a sample document for testing batch operations.",type:"custom",filename:"sample-doc.txt"},{content:JSON.stringify({report:"Monthly Performance",data:[1,2,3,4,5],summary:"All systems operating normally"}),type:"custom",filename:"performance-report.json"}],n=await e.batchUpload(t);console.log("Batch upload results:"),n.forEach((r,i)=>{r.success?console.log(` \u2705 Item ${i+1}: ${r.data?.uri}`):console.log(` \u274C Item ${i+1}: ${r.message}`);});}async function Tn(c){console.log("\u{1F527} Example: IPFS utilities usage");let e=f(c),t={name:"Test Agent",version:"1.0.0",capabilities:["testing","demonstration"],description:"This is a test agent for demonstrating IPFS utilities",serviceEndpoint:"https://test-agent.example.com/api"},n=await e.storeAgentMetadata(t);console.log("Storage result:"),console.log(` URI: ${n.uri}`),console.log(` Used IPFS: ${n.useIpfs}`),console.log(` Size: ${n.size} bytes`),n.ipfsMetadata&&(console.log(` IPFS Hash: ${n.ipfsMetadata.ipfsHash}`),console.log(` Pinned: ${n.ipfsMetadata.pinned}`));let r=await e.retrieveAgentMetadata(n.uri);console.log("Retrieved metadata:",r);let i=e.getStats();console.log("IPFS Utils Stats:"),console.log(` Cache size: ${i.cacheStats.size}`),console.log(` Cached keys: ${i.cacheStats.keys.join(", ")}`);}async function Fs(c,e,t,n){console.log("\u{1F680} Complete IPFS integration example");try{let r=await bn(c,t,n);e.configureIPFS(n);let i=await e.create(t,{name:"IPFS Demo Channel",description:"Channel for demonstrating IPFS integration",visibility:"public"});await Pn(e,t,i.channelId,n),await vn(e,t,i.channelId,n),await wn(c,r,n),await Sn(n),await Tn(n),console.log("\u2705 Complete IPFS integration example completed successfully!");}catch(r){throw console.error("\u274C IPFS integration example failed:",r instanceof Error?r.message:String(r)),r}}var Os={development:{...De.localNodeConfig,enableCache:true,sizeThreshold:100},staging:{...De.pinataConfig,sizeThreshold:500,maxRetries:5},production:{...De.multiProviderConfig,sizeThreshold:800,maxRetries:3,enableCache:true,cacheTTL:6e5}};var Rn=(c=0)=>e=>`\x1B[${e+c}m`,In=(c=0)=>e=>`\x1B[${38+c};5;${e}m`,Cn=(c=0)=>(e,t,n)=>`\x1B[${38+c};2;${e};${t};${n}m`,v={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(v.modifier);var $s=Object.keys(v.color),_s=Object.keys(v.bgColor);[...$s,..._s];function Us(){let c=new Map;for(let[e,t]of Object.entries(v)){for(let[n,r]of Object.entries(t))v[n]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},t[n]=v[n],c.set(r[0],r[1]);Object.defineProperty(v,e,{value:t,enumerable:false});}return Object.defineProperty(v,"codes",{value:c,enumerable:false}),v.color.close="\x1B[39m",v.bgColor.close="\x1B[49m",v.color.ansi=Rn(),v.color.ansi256=In(),v.color.ansi16m=Cn(),v.bgColor.ansi=Rn(10),v.bgColor.ansi256=In(10),v.bgColor.ansi16m=Cn(10),Object.defineProperties(v,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:false},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return [0,0,0];let[n]=t;n.length===3&&(n=[...n].map(i=>i+i).join(""));let r=Number.parseInt(n,16);return [r>>16&255,r>>8&255,r&255]},enumerable:false},hexToAnsi256:{value:e=>v.rgbToAnsi256(...v.hexToRgb(e)),enumerable:false},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else {e-=16;let o=e%36;t=Math.floor(e/36)/5,n=Math.floor(o/6)/5,r=o%6/5;}let i=Math.max(t,n,r)*2;if(i===0)return 30;let s=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(s+=60),s},enumerable:false},rgbToAnsi:{value:(e,t,n)=>v.ansi256ToAnsi(v.rgbToAnsi256(e,t,n)),enumerable:false},hexToAnsi:{value:e=>v.ansi256ToAnsi(v.hexToAnsi256(e)),enumerable:false}}),v}var Ns=Us(),E=Ns;var Ee=(()=>{if(!("navigator"in globalThis))return 0;if(globalThis.navigator.userAgentData){let c=navigator.userAgentData.brands.find(({brand:e})=>e==="Chromium");if(c&&c.version>93)return 3}return /\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)?1:0})(),kn=Ee!==0&&{level:Ee},Ws={stdout:kn,stderr:kn},Dn=Ws;function En(c,e,t){let n=c.indexOf(e);if(n===-1)return c;let r=e.length,i=0,s="";do s+=c.slice(i,n)+e+t,i=n+r,n=c.indexOf(e,i);while(n!==-1);return s+=c.slice(i),s}function Mn(c,e,t,n){let r=0,i="";do{let s=c[n-1]==="\r";i+=c.slice(r,s?n-1:n)+e+(s?`\r
79
- `:`
80
- `)+t,r=n+1,n=c.indexOf(`
81
- `,r);}while(n!==-1);return i+=c.slice(r),i}var{stdout:xn,stderr:Bn}=Dn,gt=Symbol("GENERATOR"),H=Symbol("STYLER"),me=Symbol("IS_EMPTY"),Fn=["ansi","ansi","ansi256","ansi16m"],z=Object.create(null),Ls=(c,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=xn?xn.level:0;c.level=e.level===void 0?t:e.level;};var Gs=c=>{let e=(...t)=>t.join(" ");return Ls(e,c),Object.setPrototypeOf(e,pe.prototype),e};function pe(c){return Gs(c)}Object.setPrototypeOf(pe.prototype,Function.prototype);for(let[c,e]of Object.entries(E))z[c]={get(){let t=Me(this,pt(e.open,e.close,this[H]),this[me]);return Object.defineProperty(this,c,{value:t}),t}};z.visible={get(){let c=Me(this,this[H],true);return Object.defineProperty(this,"visible",{value:c}),c}};var mt=(c,e,t,...n)=>c==="rgb"?e==="ansi16m"?E[t].ansi16m(...n):e==="ansi256"?E[t].ansi256(E.rgbToAnsi256(...n)):E[t].ansi(E.rgbToAnsi(...n)):c==="hex"?mt("rgb",e,t,...E.hexToRgb(...n)):E[t][c](...n),Vs=["rgb","hex","ansi256"];for(let c of Vs){z[c]={get(){let{level:t}=this;return function(...n){let r=pt(mt(c,Fn[t],"color",...n),E.color.close,this[H]);return Me(this,r,this[me])}}};let e="bg"+c[0].toUpperCase()+c.slice(1);z[e]={get(){let{level:t}=this;return function(...n){let r=pt(mt(c,Fn[t],"bgColor",...n),E.bgColor.close,this[H]);return Me(this,r,this[me])}}};}var qs=Object.defineProperties(()=>{},{...z,level:{enumerable:true,get(){return this[gt].level},set(c){this[gt].level=c;}}}),pt=(c,e,t)=>{let n,r;return t===void 0?(n=c,r=e):(n=t.openAll+c,r=e+t.closeAll),{open:c,close:e,openAll:n,closeAll:r,parent:t}},Me=(c,e,t)=>{let n=(...r)=>Js(n,r.length===1?""+r[0]:r.join(" "));return Object.setPrototypeOf(n,qs),n[gt]=c,n[H]=e,n[me]=t,n},Js=(c,e)=>{if(c.level<=0||!e)return c[me]?"":e;let t=c[H];if(t===void 0)return e;let{openAll:n,closeAll:r}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=En(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
82
- `);return i!==-1&&(e=Mn(e,r,n,i)),n+e+r};Object.defineProperties(pe.prototype,z);var js=pe();pe({level:Bn?Bn.level:0});var M=js;var xe=class{rpc;commitment="confirmed";isDevnetUrl;constructor(e,t="confirmed"){this.isDevnetUrl=e.includes("devnet"),this.rpc=createSolanaRpc(e),this.commitment=t;}async fundWallet(e,t){let{amount:n,minAmount:r=n,maxRetries:i=3,retryDelay:s=2e3,useTreasury:o=true,treasuryWallet:a,fundedWallets:l=[],verbose:d=false}=t,u=m=>{d&&console.log(M.gray(`[WalletFunding] ${m}`));},g=0;try{let m=await this.getBalance(e);if(u(`Current balance: ${this.formatSol(m)} SOL`),m>=r)return u("Wallet already has sufficient balance"),{success:!0,balance:m,method:"existing",attempts:0};let p=n-m;if(u(`Need to fund: ${this.formatSol(p)} SOL`),this.isDevnetUrl&&"requestAirdrop"in this.rpc){u("Attempting devnet airdrop...");let f=await this.tryAirdrop(e,p,i,s,d);if(f.success)return {success:!0,balance:await this.getBalance(e),method:"airdrop",attempts:f.attempts,signature:f.signature};g+=f.attempts,u(`Airdrop failed after ${f.attempts} attempts`);}if(o&&a){u("Attempting treasury wallet funding...");let f=await this.tryTreasuryFunding(e,p,a,d);if(f.success)return {success:!0,balance:await this.getBalance(e),method:"treasury",attempts:g+1,signature:f.signature};g++,u(`Treasury funding failed: ${f.error}`);}for(let f of l){u("Attempting funding from additional wallet...");let b=await this.tryFundedWalletTransfer(e,p,f,d);if(b.success)return {success:!0,balance:await this.getBalance(e),method:"funded-wallet",attempts:g+1,signature:b.signature};g++,u(`Funded wallet transfer failed: ${b.error}`);}throw new Error("All funding strategies failed")}catch(m){return {success:false,balance:await this.getBalance(e),method:"airdrop",attempts:g,error:m instanceof Error?m.message:"Unknown error"}}}async tryAirdrop(e,t,n,r,i){if(!("requestAirdrop"in this.rpc))return {success:false,attempts:0,error:"Airdrop not available on this network"};let s=0;for(let o=0;o<n;o++){s++;try{let l=await this.rpc.requestAirdrop(e,lamports(t),{commitment:this.commitment}).send();i&&console.log(M.gray(`[WalletFunding] Airdrop requested: ${l}`)),await this.rpc.getLatestBlockhash().send();let d=!1,u=30;for(let g=0;g<u;g++){let p=(await this.rpc.getSignatureStatuses([l]).send()).value[0];if(p&&p.confirmationStatus==="confirmed"){d=!0;break}await new Promise(f=>setTimeout(f,1e3));}if(await new Promise(g=>setTimeout(g,1e3)),!d)throw new Error("Airdrop confirmation timeout");return {success:!0,attempts:s,signature:l}}catch(a){i&&console.log(M.gray(`[WalletFunding] Airdrop attempt ${s} failed: ${a}`)),o<n-1&&await new Promise(l=>setTimeout(l,r));}}return {success:false,attempts:s,error:"Max retries exceeded"}}async tryTreasuryFunding(e,t,n,r){try{let i=await this.loadWallet(n),s=await this.getBalance(i.address);return r&&console.log(M.gray(`[WalletFunding] Treasury balance: ${this.formatSol(s)} SOL`)),s<t+5000n?{success:!1,error:"Insufficient treasury balance"}:{success:!0,signature:await this.transferSol(i,e,t,r)}}catch(i){return {success:false,error:i instanceof Error?i.message:"Unknown error"}}}async tryFundedWalletTransfer(e,t,n,r){try{let i=await this.loadWallet(n),s=await this.getBalance(i.address);return r&&console.log(M.gray(`[WalletFunding] Funded wallet balance: ${this.formatSol(s)} SOL`)),s<t+5000n?{success:!1,error:"Insufficient wallet balance"}:{success:!0,signature:await this.transferSol(i,e,t,r)}}catch(i){return {success:false,error:i instanceof Error?i.message:"Unknown error"}}}async transferSol(e,t,n,r){let{value:i}=await this.rpc.getLatestBlockhash().send(),s=getTransferSolInstruction({source:e,destination:t,amount:n}),o=pipe(createTransactionMessage({version:0}),p=>setTransactionMessageFeePayer(e.address,p),p=>setTransactionMessageLifetimeUsingBlockhash(i,p),p=>appendTransactionMessageInstructions([s],p)),a=await signTransactionMessageWithSigners(o),l=getBase64EncodedWireTransaction(a),u=await this.rpc.sendTransaction(l,{skipPreflight:false,preflightCommitment:this.commitment,maxRetries:5n}).send();r&&console.log(M.gray(`[WalletFunding] Transfer sent: ${u}`));let g=false,m=30;for(let p=0;p<m;p++){let b=(await this.rpc.getSignatureStatuses([u]).send()).value[0];if(b&&b.confirmationStatus==="confirmed"){g=true;break}await new Promise(h=>setTimeout(h,1e3));}if(!g)throw new Error("Transaction confirmation timeout");return u}async loadWallet(e){if(typeof e!="string")return e;let t=process.env[e];if(t)try{let r=JSON.parse(t);return await createKeyPairSignerFromBytes(new Uint8Array(r))}catch{throw new Error("Base58 private key loading not implemented")}let n=JSON.parse(await promises.readFile(e,"utf-8"));return createKeyPairSignerFromBytes(new Uint8Array(n))}async getBalance(e){return (await this.rpc.getBalance(e,{commitment:this.commitment}).send()).value}async isDevnet(){try{let e=await this.rpc.getGenesisHash().send();return await Promise.resolve(e==="EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG")}catch{return false}}formatSol(e){return (Number(e)/1e9).toFixed(4)}async createAndFundTestWallets(e,t,n){let r=[];console.log(M.cyan(`Creating and funding ${e} test wallets...`));for(let i=0;i<e;i++){let s=await generateKeyPairSigner();console.log(M.gray(`Wallet ${i+1}: ${s.address}`));let o=await this.fundWallet(s.address,{...n,amount:t});o.success?(r.push(s),console.log(M.green(`\u2705 Funded with ${this.formatSol(o.balance)} SOL via ${o.method}`))):console.log(M.red(`\u274C Failed to fund: ${o.error}`));}return r}async ensureMinimumBalance(e,t,n){let r=await this.getBalance(e);if(r>=t)return {success:true,balance:r,method:"existing",attempts:0};let i=t-r;return this.fundWallet(e,{amount:i,minAmount:t,...n})}},ft=new xe(process.env.GHOSTSPEAK_RPC_URL??"https://api.devnet.solana.com");async function so(c,e,t){return ft.fundWallet(c,{amount:BigInt(Math.floor(e*1e9)),...t})}async function oo(c,e,t){return ft.ensureMinimumBalance(c,BigInt(Math.floor(e*1e9)),t)}var ht=class{constructor(e,t){this.connection=e;this.storage=t??new l$1;}storage;batches=new Map;createBatch(e){let t=this.generateBatchId(),n={batchId:t,items:e.map(r=>({...r,status:"pending"})),status:"pending",progress:{total:e.length,completed:0,failed:0},createdAt:Date.now()};return this.batches.set(t,n),n}async executeBatch(e,t={}){let n=this.batches.get(e);if(!n)throw new Error(`Batch ${e} not found`);if(n.status!=="pending")throw new Error(`Batch ${e} is not in pending state`);n.status="in_progress",n.startedAt=Date.now();let r={successful:[],failed:[],stats:{totalTime:0,averageTimePerItem:0,successRate:0}};try{if(!await j(this.connection))throw new Error("ZK program is not available for migration");t.parallel?await this.processBatchParallel(n,r,t):await this.processBatchSequential(n,r,t),n.status=r.failed.length===0?"completed":"failed",n.completedAt=Date.now(),r.stats.totalTime=n.completedAt-n.startedAt,r.stats.averageTimePerItem=r.stats.totalTime/n.items.length,r.stats.successRate=r.successful.length/n.items.length;}catch(i){throw n.status="failed",i}return r}async checkReadiness(){let e=[],t=await j(this.connection);t||e.push("ZK ElGamal Proof Program is not available");let n=b$3(),r={CONFIDENTIAL_TRANSFERS_ENABLED:n.isEnabled("CONFIDENTIAL_TRANSFERS_ENABLED"),USE_ZK_PROOFS:n.isEnabled("USE_ZK_PROOFS"),USE_CLIENT_ENCRYPTION:n.isEnabled("USE_CLIENT_ENCRYPTION")};return r.USE_ZK_PROOFS||e.push("ZK proofs are not enabled in feature flags"),r.USE_CLIENT_ENCRYPTION&&e.push("Client encryption is still enabled - consider disabling after migration"),{ready:t&&r.USE_ZK_PROOFS,zkProgramAvailable:t,featureFlags:r,warnings:e}}async prepareForMigration(e,t,n){return h$1(e,t,n)}async verifyMigration(e,t){let n={commitmentMatch:bytesToHex(e.commitment)===bytesToHex(t.ciphertext.commitment.commitment),publicKeyMatch:bytesToHex(e.publicKey)===bytesToHex(e.publicKey),timestampValid:e.timestamp>0};return {valid:Object.values(n).every(i=>i),checks:n}}generateBatchId(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,8);return `migration_${e}_${t}`}async processBatchSequential(e,t,n){for(let r of e.items){try{await this.migrateItem(r),t.successful.push(r.id),e.progress.completed++;}catch(i){t.failed.push({id:r.id,reason:i instanceof Error?i.message:"Unknown error"}),e.progress.failed++,r.status="failed",r.error=i instanceof Error?i.message:"Unknown error";}n.onProgress?.(e.progress);}}async processBatchParallel(e,t,n){let r=n.maxConcurrency??10,i=this.chunkArray(e.items,r);for(let s of i)await Promise.all(s.map(async o=>{try{await this.migrateItem(o),t.successful.push(o.id),e.progress.completed++;}catch(a){t.failed.push({id:o.id,reason:a instanceof Error?a.message:"Unknown error"}),e.progress.failed++,o.status="failed",o.error=a instanceof Error?a.message:"Unknown error";}n.onProgress?.(e.progress);}));}async migrateItem(e){if(e.status="migrating",!e.migrationData)throw new Error("Migration data not prepared");e.migrationData.zkMetadata.amount&&e.migrationData.zkMetadata.randomness&&await f$2(e.migrationData.zkMetadata.amount,e.migrationData.zkMetadata.randomness,{mode:"zk_program_only",connection:this.connection}),e.status="completed";}chunkArray(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}};function ao(c,e={}){let t=e.gasPrice??5000n,n=e.proofGenerationCost??10000n,r=e.storageUpdateCost??5000n,i={proofGeneration:n*BigInt(c),storageUpdates:r*BigInt(c),transactionFees:t*BigInt(c)},s=i.proofGeneration+i.storageUpdates+i.transactionFees,o=s/BigInt(c);return {totalCost:s,costPerItem:o,breakdown:i}}function co(c,e={}){let t=c.reduce((s,o)=>s+o.successful.length+o.failed.length,0),n=c.reduce((s,o)=>s+o.successful.length,0),r=c.reduce((s,o)=>s+o.failed.length,0),i=n/t;if(e.format==="markdown"){let s=`# Migration Report
83
-
84
- `;return s+=`## Summary
85
-
86
- `,s+=`- Total Items: ${t}
87
- `,s+=`- Successful: ${n} (${(i*100).toFixed(2)}%)
88
- `,s+=`- Failed: ${r}
89
-
90
- `,e.includeDetails&&r>0&&(s+=`## Failed Items
91
-
92
- `,c.forEach((o,a)=>{o.failed.length>0&&(s+=`### Batch ${a+1}
93
-
94
- `,o.failed.forEach(l=>{s+=`- **${l.id}**: ${l.reason}
95
- `;}),s+=`
96
- `);})),s}return JSON.stringify({summary:{totalItems:t,successful:n,failed:r,successRate:i},batches:c.map((s,o)=>({batchIndex:o,successful:s.successful.length,failed:s.failed.length,stats:s.stats,failures:e.includeDetails?s.failed:void 0}))},null,2)}var yt=class{static createCheckpoint(e,t){let n={hash:sha256(new TextEncoder().encode(JSON.stringify({data:e,metadata:t})))};return bytesToHex(n.hash)}static verifyCheckpoint(e,t,n){let r=sha256(new TextEncoder().encode(JSON.stringify({data:t,metadata:n})));return e===bytesToHex(r)}};export{re as A2AInstructions,te as AgentInstructions,le as AnalyticsInstructions,se as AuctionInstructions,ce as BulkDealsInstructions,Ie as CircuitBreaker,de as ComplianceInstructions,ut as DEFAULT_RETRY_CONFIG,Os as DEPLOYMENT_CONFIGS,oe as DisputeInstructions,ke as FallbackHandler,ks as GHOSTSPEAK_PROGRAM_ID,ae as GovernanceInstructions,ge as IPFSErrorHandler,O as IPFSOperationError,De as IPFS_EXAMPLES,lt as LegacyGhostSpeakClient,ne as MarketplaceInstructions,ht as MigrationManager,yt as MigrationRollback,ue as ReputationInstructions,Ce as RetryHandler,dt as TEST_IPFS_CONFIG,xe as WalletFundingService,Es as createIPFSErrorHandler,co as createPrivacyMigrationReport,Ds as createTestIPFSConfig,ft as defaultFundingService,oo as ensureMinimumBalance,ao as estimateMigrationCost,Sn as exampleBatchIPFSOperations,Fs as exampleCompleteIPFSIntegration,bn as exampleCreateAgentWithIPFS,Tn as exampleIPFSUtilities,Bs as exampleResolveMessageContent,wn as exampleRetrieveAgentMetadata,Pn as exampleSendLargeMessage,vn as exampleSendMessageWithAttachments,so as fundWallet,Ms as isIPFSError,xs as withIPFSErrorHandling};//# sourceMappingURL=index.js.map
97
- //# sourceMappingURL=index.js.map