@ghostspeak/sdk 2.0.5 → 2.0.7
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.
- package/README.md +152 -30
- package/dist/GhostSpeakClient-CWmGaM9Q.d.ts +1007 -0
- package/dist/StakingModule-C5rzuOWb.d.ts +2526 -0
- package/dist/{agent-M74TCRON.js → agent-5YLZ7DAC.js} +4 -4
- package/dist/{agent-M74TCRON.js.map → agent-5YLZ7DAC.js.map} +1 -1
- package/dist/batch-operations-45CQFEID.js +4 -0
- package/dist/batch-operations-45CQFEID.js.map +1 -0
- package/dist/browser.d.ts +45 -554
- package/dist/browser.js +15 -842
- package/dist/browser.js.map +1 -1
- package/dist/chunk-AL3HQN73.js +754 -0
- package/dist/chunk-AL3HQN73.js.map +1 -0
- package/dist/chunk-BF3IQ35I.js +284 -0
- package/dist/chunk-BF3IQ35I.js.map +1 -0
- package/dist/chunk-BQDGRTVP.js +168 -0
- package/dist/chunk-BQDGRTVP.js.map +1 -0
- package/dist/chunk-C5CDA3WX.js +7314 -0
- package/dist/chunk-C5CDA3WX.js.map +1 -0
- package/dist/chunk-E3FD2CNY.js +1869 -0
- package/dist/chunk-E3FD2CNY.js.map +1 -0
- package/dist/{chunk-V3SOFUAZ.js → chunk-G7S6B6WB.js} +327 -493
- package/dist/chunk-G7S6B6WB.js.map +1 -0
- package/dist/chunk-IHVDQ4YI.js +4231 -0
- package/dist/chunk-IHVDQ4YI.js.map +1 -0
- package/dist/chunk-JV2SWONF.js +98 -0
- package/dist/chunk-JV2SWONF.js.map +1 -0
- package/dist/chunk-KB6CKIUK.js +231 -0
- package/dist/chunk-KB6CKIUK.js.map +1 -0
- package/dist/chunk-RIZZPLLB.js +343 -0
- package/dist/chunk-RIZZPLLB.js.map +1 -0
- package/dist/chunk-S74EH3KD.js +7890 -0
- package/dist/chunk-S74EH3KD.js.map +1 -0
- package/dist/chunk-SFTSZ3LC.js +156 -0
- package/dist/chunk-SFTSZ3LC.js.map +1 -0
- package/dist/chunk-SKMJJ3Q6.js +125 -0
- package/dist/chunk-SKMJJ3Q6.js.map +1 -0
- package/dist/chunk-SZGFSCNU.js +3682 -0
- package/dist/chunk-SZGFSCNU.js.map +1 -0
- package/dist/chunk-TTB4OS2D.js +69 -0
- package/dist/chunk-TTB4OS2D.js.map +1 -0
- package/dist/chunk-UP2VWCW5.js +33 -0
- package/dist/{chunk-NSBPE2FW.js.map → chunk-UP2VWCW5.js.map} +1 -1
- package/dist/{chunk-UJUGGLMT.js → chunk-VQZQCHUT.js} +5 -5
- package/dist/{chunk-UJUGGLMT.js.map → chunk-VQZQCHUT.js.map} +1 -1
- package/dist/client.d.ts +6 -4
- package/dist/client.js +12 -10
- package/dist/createAgentAuthorization-ULG47ZJI.js +5 -0
- package/dist/createAgentAuthorization-ULG47ZJI.js.map +1 -0
- package/dist/credentials.d.ts +155 -0
- package/dist/credentials.js +4 -0
- package/dist/credentials.js.map +1 -0
- package/dist/crypto.js +2 -2
- package/dist/errors.js +1 -1
- package/dist/feature-flags-B1g0DCPe.d.ts +1181 -0
- package/dist/generated-EG5USUFG.js +9 -0
- package/dist/{generated-VNLHMR6Y.js.map → generated-EG5USUFG.js.map} +1 -1
- package/dist/{ghostspeak_wasm-SB2RPJ3D.js → ghostspeak_wasm-F227HOSM.js} +3 -3
- package/dist/{ghostspeak_wasm-SB2RPJ3D.js.map → ghostspeak_wasm-F227HOSM.js.map} +1 -1
- package/dist/index.d.ts +1210 -1506
- package/dist/index.js +601 -3532
- package/dist/index.js.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/minimal/core-minimal.d.ts +2383 -1264
- package/dist/minimal/core-minimal.js +9 -9
- package/dist/minimal/core-minimal.js.map +1 -1
- package/dist/nacl-fast-W5BJ3KZ2.js +2229 -0
- package/dist/nacl-fast-W5BJ3KZ2.js.map +1 -0
- package/dist/pda-4KP7CURF.js +4 -0
- package/dist/pda-4KP7CURF.js.map +1 -0
- package/dist/pda-Ce7VYg4T.d.ts +25 -0
- package/dist/reputation-types-Yebf0Rm_.d.ts +1071 -0
- package/dist/revokeAuthorization-OK7E7OK3.js +5 -0
- package/dist/revokeAuthorization-OK7E7OK3.js.map +1 -0
- package/dist/signature-verification-DGxR4aYQ.d.ts +448 -0
- package/dist/types.js +1 -1
- package/dist/updateReputationWithAuth-Y4ONEVSP.js +5 -0
- package/dist/updateReputationWithAuth-Y4ONEVSP.js.map +1 -0
- package/dist/utils.d.ts +69 -203
- package/dist/utils.js +15 -153
- package/dist/utils.js.map +1 -1
- package/package.json +28 -31
- package/dist/.tsbuildinfo +0 -1
- package/dist/GhostSpeakClient-hsGuGg__.d.ts +0 -860
- package/dist/GovernanceModule-DQYYys-H.d.ts +0 -1766
- package/dist/chunk-ASQXX4IT.js +0 -572
- package/dist/chunk-ASQXX4IT.js.map +0 -1
- package/dist/chunk-COGZFWOT.js +0 -19657
- package/dist/chunk-COGZFWOT.js.map +0 -1
- package/dist/chunk-FKRN4PW5.js +0 -1667
- package/dist/chunk-FKRN4PW5.js.map +0 -1
- package/dist/chunk-GMHIUK2R.js +0 -7526
- package/dist/chunk-GMHIUK2R.js.map +0 -1
- package/dist/chunk-IAWBZYPE.js +0 -356
- package/dist/chunk-IAWBZYPE.js.map +0 -1
- package/dist/chunk-NSBPE2FW.js +0 -15
- package/dist/chunk-OWYHJG6H.js +0 -13311
- package/dist/chunk-OWYHJG6H.js.map +0 -1
- package/dist/chunk-RDDPOFR5.js +0 -3
- package/dist/chunk-RDDPOFR5.js.map +0 -1
- package/dist/chunk-RERCHKZP.js +0 -35
- package/dist/chunk-RERCHKZP.js.map +0 -1
- package/dist/chunk-TVVGXYCI.js +0 -2887
- package/dist/chunk-TVVGXYCI.js.map +0 -1
- package/dist/chunk-V3SOFUAZ.js.map +0 -1
- package/dist/chunk-ZGP5552B.js +0 -377
- package/dist/chunk-ZGP5552B.js.map +0 -1
- package/dist/chunk-ZWOYNHVK.js +0 -196
- package/dist/chunk-ZWOYNHVK.js.map +0 -1
- package/dist/dist/.tsbuildinfo +0 -1
- package/dist/elgamal-VZLWB3XK.js +0 -5
- package/dist/elgamal-VZLWB3XK.js.map +0 -1
- package/dist/feature-flags-V722ZuXO.d.ts +0 -3512
- package/dist/generated-VNLHMR6Y.js +0 -5
- package/dist/ipfs-types-BOt9ZNg4.d.ts +0 -592
- package/dist/multisigConfig-BzEhy6jy.d.ts +0 -58
- package/dist/pda-B_nS8SbD.d.ts +0 -114
- package/dist/pda-S4BFJVGE.js +0 -4
- package/dist/pda-S4BFJVGE.js.map +0 -1
- package/dist/system-addresses-BFNLEbFx.d.ts +0 -857
- package/dist/token-2022-rpc-RALH4RK7.js +0 -593
- package/dist/token-2022-rpc-RALH4RK7.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/multisig/MultisigModule.ts","../src/modules/credentials/CrossmintVCClient.ts","../src/modules/credentials/CredentialModule.ts","../src/modules/credentials/UnifiedCredentialService.ts","../src/core/GhostSpeakClient.ts"],"names":["CredentialKind","CredentialStatus"],"mappings":"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","file":"chunk-FKRN4PW5.js","sourcesContent":["\nimport type { Address } from '@solana/addresses'\nimport type { TransactionSigner } from '@solana/kit'\nimport { BaseModule } from '../../core/BaseModule.js'\nimport {\n getCreateMultisigInstruction,\n getInitializeGovernanceProposalInstructionAsync,\n getCastVoteInstruction,\n getExecuteProposalInstruction,\n type MultisigConfigArgs,\n VoteChoice,\n type ProposalTypeArgs,\n type ExecutionParamsArgs\n} from '../../generated/index.js'\nimport { deriveMultisigPda } from '../../utils/governance-helpers.js'\n\nexport interface CreateMultisigParams {\n multisigId: bigint\n threshold: number\n signers: Address[]\n config?: Partial<MultisigConfigArgs>\n owner: TransactionSigner\n}\n\nexport interface MultisigProposalParams {\n multisigAddress: Address\n title: string\n description: string\n proposalType: ProposalTypeArgs\n executionParams: ExecutionParamsArgs\n proposalId: bigint\n proposer: TransactionSigner\n}\n\nexport interface ApproveProposalParams {\n proposalAddress: Address\n voter: TransactionSigner\n voterTokenAccount: Address\n reasoning?: string\n voteChoice?: VoteChoice\n}\n\nexport interface ExecuteProposalParams {\n proposalAddress: Address\n executor: TransactionSigner\n targetProgram: Address\n}\n\nexport class MultisigModule extends BaseModule {\n /**\n * Create a new multisig account\n */\n async createMultisig(params: CreateMultisigParams): Promise<string> {\n const defaultConfig: MultisigConfigArgs = {\n max_signers: 10,\n default_timeout: 86400n, // 24 hours\n allow_emergency_override: false,\n emergency_threshold: { __option: 'None' },\n auto_execute: true,\n signer_change_threshold: params.threshold,\n allowed_transaction_types: [],\n daily_limits: []\n }\n\n const config = { ...defaultConfig, ...params.config }\n \n // Derive PDA with correct argument order: programId, authority, multisigId\n const multisigPda = await deriveMultisigPda(this.programId, params.owner.address, params.multisigId)\n\n const instruction = getCreateMultisigInstruction({\n multisig: multisigPda,\n owner: params.owner,\n multisigId: params.multisigId,\n threshold: params.threshold,\n signers: params.signers,\n config\n })\n\n return this.execute('createMultisig', () => instruction, [params.owner])\n }\n\n /**\n * Create a proposal (Uses Governance Protocol)\n * \n * Note: This creates a GovernanceProposal. The proposer must be a signer.\n */\n async createProposal(params: MultisigProposalParams): Promise<string> {\n // We use the async builder which handles PDA derivation for us\n const instruction = await getInitializeGovernanceProposalInstructionAsync({\n proposer: params.proposer,\n proposalId: params.proposalId,\n title: params.title,\n description: params.description,\n proposalType: params.proposalType,\n executionParams: params.executionParams,\n }, { programAddress: this.programId })\n\n return this.execute('createProposal', () => instruction, [params.proposer])\n }\n\n /**\n * Approve (Vote on) a proposal\n */\n async approveProposal(params: ApproveProposalParams): Promise<string> {\n const instruction = getCastVoteInstruction({\n proposal: params.proposalAddress,\n voter: params.voter,\n voterTokenAccount: params.voterTokenAccount,\n voteChoice: params.voteChoice ?? VoteChoice.For,\n reasoning: params.reasoning ?? null\n })\n\n return this.execute('approveProposal', () => instruction, [params.voter])\n }\n\n /**\n * Execute a proposal\n */\n async executeProposal(params: ExecuteProposalParams): Promise<string> {\n const instruction = getExecuteProposalInstruction({\n proposal: params.proposalAddress,\n executor: params.executor,\n targetProgram: params.targetProgram\n })\n\n return this.execute('executeProposal', () => instruction, [params.executor])\n }\n}\n","/**\n * Crossmint Verifiable Credentials API Client\n * \n * Integrates with Crossmint's VC system to issue and verify credentials.\n * Ported from packages/web for SDK consumption.\n */\n\n// Constants\nconst CROSSMINT_STAGING_URL = 'https://staging.crossmint.com'\nconst CROSSMINT_PROD_URL = 'https://www.crossmint.com'\n\n// GhostSpeak credential type names (registered with Crossmint)\nexport const GHOSTSPEAK_CREDENTIAL_TYPES = {\n AGENT_IDENTITY: 'GhostSpeakAgentIdentity',\n REPUTATION_SCORE: 'GhostSpeakReputation',\n JOB_COMPLETION: 'GhostSpeakJobCompletion',\n} as const\n\ninterface ActionResponse {\n id: string\n status: string\n data?: {\n collection?: CredentialTemplate\n }\n}\n\ninterface ErrorResponse {\n message?: string\n error?: unknown\n}\n\n// Type definitions\nexport interface CredentialType {\n id: string // e.g., \"crossmint:xxx:MyType\"\n typeSchema: {\n $schema: string\n $id: string\n title: string\n description: string\n type: string\n properties: Record<string, unknown>\n }\n}\n\nexport interface CredentialTemplate {\n id: string\n metadata: {\n name: string\n description: string\n imageUrl: string\n }\n fungibility: string\n onChain: {\n chain: string\n type: string\n }\n actionId: string\n}\n\nexport interface IssuedCredential {\n id: string\n credentialId: string\n onChain: {\n status: 'pending' | 'completed'\n chain: string\n contractAddress: string\n tokenId?: string\n }\n actionId: string\n}\n\nexport interface VerificationResult {\n isValid: boolean\n errors?: string[]\n}\n\nexport interface CrossmintClientOptions {\n apiKey: string\n environment?: 'staging' | 'production'\n chain?: 'base-sepolia' | 'polygon-amoy' | 'ethereum-sepolia' | 'base' | 'polygon' | 'ethereum'\n}\n\n/**\n * Crossmint Verifiable Credentials Client\n * \n * Handles the complete credential lifecycle:\n * 1. Create credential types (JSON schemas)\n * 2. Create credential templates (on-chain configuration)\n * 3. Issue credentials to recipients\n * 4. Retrieve credentials\n * 5. Verify credentials\n * 6. Revoke credentials\n * \n * NOTE: Crossmint VCs are only supported on EVM chains.\n */\nexport class CrossmintVCClient {\n private apiKey: string\n private baseUrl: string\n private chain: string\n\n constructor(options: CrossmintClientOptions) {\n this.apiKey = options.apiKey\n this.baseUrl = options.environment === 'production' \n ? CROSSMINT_PROD_URL \n : CROSSMINT_STAGING_URL\n this.chain = options.chain || 'base-sepolia'\n }\n\n // ===================================\n // Types & Templates\n // ===================================\n\n /**\n * Create the GhostSpeak Agent Identity credential type\n */\n async createAgentIdentityType(): Promise<CredentialType> {\n const typeName = GHOSTSPEAK_CREDENTIAL_TYPES.AGENT_IDENTITY\n const schema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'GhostSpeak Agent Identity',\n description: 'Verified AI agent identity on the GhostSpeak Protocol',\n type: 'object',\n properties: {\n credentialSubject: {\n type: 'object',\n properties: {\n agentId: { type: 'string' },\n owner: { type: 'string' },\n capabilities: { type: 'array', items: { type: 'string' } },\n registeredAt: { type: 'string' },\n reputationScore: { type: 'number' },\n totalJobsCompleted: { type: 'integer' },\n verified: { type: 'boolean' },\n id: { type: 'string' }, // Auto-added by Crossmint\n },\n required: ['agentId', 'owner', 'capabilities', 'registeredAt', 'verified'],\n additionalProperties: false,\n },\n },\n }\n return this.createCredentialType(typeName, schema)\n }\n\n /**\n * Create the GhostSpeak Reputation credential type\n */\n async createReputationType(): Promise<CredentialType> {\n const typeName = GHOSTSPEAK_CREDENTIAL_TYPES.REPUTATION_SCORE\n const schema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'GhostSpeak Reputation',\n description: 'Verified reputation score for GhostSpeak users',\n type: 'object',\n properties: {\n credentialSubject: {\n type: 'object',\n properties: {\n userId: { type: 'string' },\n walletAddress: { type: 'string' },\n reputationScore: { type: 'number' },\n totalTransactions: { type: 'integer' },\n disputeRate: { type: 'number' },\n memberSince: { type: 'string' },\n id: { type: 'string' },\n },\n required: ['userId', 'walletAddress', 'reputationScore', 'memberSince'],\n additionalProperties: false,\n },\n },\n }\n return this.createCredentialType(typeName, schema)\n }\n\n /**\n * Create the GhostSpeak Job Completion credential type\n */\n async createJobCompletionType(): Promise<CredentialType> {\n const typeName = GHOSTSPEAK_CREDENTIAL_TYPES.JOB_COMPLETION\n const schema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'GhostSpeak Job Completion',\n description: 'Certificate of successful job completion on GhostSpeak',\n type: 'object',\n properties: {\n credentialSubject: {\n type: 'object',\n properties: {\n jobId: { type: 'string' },\n agentId: { type: 'string' },\n clientAddress: { type: 'string' },\n completedAt: { type: 'string' },\n amountPaid: { type: 'string' },\n rating: { type: 'integer' },\n review: { type: 'string' },\n id: { type: 'string' },\n },\n required: ['jobId', 'agentId', 'clientAddress', 'completedAt', 'amountPaid', 'rating'],\n additionalProperties: false,\n },\n },\n }\n return this.createCredentialType(typeName, schema)\n }\n\n /**\n * Initialize all GhostSpeak credential types\n */\n async initializeAllTypes(): Promise<{\n agentIdentity: CredentialType\n reputation: CredentialType\n jobCompletion: CredentialType\n }> {\n const [agentIdentity, reputation, jobCompletion] = await Promise.all([\n this.createAgentIdentityType(),\n this.createReputationType(),\n this.createJobCompletionType(),\n ])\n\n return { agentIdentity, reputation, jobCompletion }\n }\n\n /**\n * Create all GhostSpeak credential templates\n */\n async createAllTemplates(types: {\n agentIdentity: CredentialType\n reputation: CredentialType\n jobCompletion: CredentialType\n }): Promise<{\n agentIdentityTemplate: CredentialTemplate\n reputationTemplate: CredentialTemplate\n jobCompletionTemplate: CredentialTemplate\n }> {\n const [agentIdentityTemplate, reputationTemplate, jobCompletionTemplate] = await Promise.all([\n this.createTemplate(types.agentIdentity.id, {\n name: 'GhostSpeak Agent Identity',\n description: 'Verified AI agent identity on the GhostSpeak Protocol',\n imageUrl: 'https://www.ghostspeak.io/assets/credential-agent.png',\n }),\n this.createTemplate(types.reputation.id, {\n name: 'GhostSpeak Reputation',\n description: 'Verified reputation score for GhostSpeak users',\n imageUrl: 'https://www.ghostspeak.io/assets/credential-reputation.png',\n }),\n this.createTemplate(types.jobCompletion.id, {\n name: 'GhostSpeak Job Completion Certificate',\n description: 'Certificate of successful job completion on GhostSpeak',\n imageUrl: 'https://www.ghostspeak.io/assets/credential-job.png',\n }),\n ])\n\n return { agentIdentityTemplate, reputationTemplate, jobCompletionTemplate }\n }\n\n /**\n * Issue an agent identity credential\n */\n async issueAgentCredential(\n templateId: string,\n recipientEmail: string,\n subject: Record<string, unknown>,\n expiresAt?: string\n ): Promise<IssuedCredential> {\n return this.issueCredential(templateId, recipientEmail, subject, expiresAt)\n }\n\n /**\n * Issue a reputation credential\n */\n async issueReputationCredential(\n templateId: string,\n recipientEmail: string,\n subject: Record<string, unknown>,\n expiresAt?: string\n ): Promise<IssuedCredential> {\n return this.issueCredential(templateId, recipientEmail, subject, expiresAt)\n }\n\n /**\n * Issue a job completion credential\n */\n async issueJobCompletionCredential(\n templateId: string,\n recipientEmail: string,\n subject: Record<string, unknown>,\n expiresAt?: string\n ): Promise<IssuedCredential> {\n return this.issueCredential(templateId, recipientEmail, subject, expiresAt)\n }\n\n\n\n /**\n * Create a credential type (JSON Schema)\n */\n async createCredentialType(typeName: string, schema: Record<string, unknown>): Promise<CredentialType> {\n const response = await fetch(\n `${this.baseUrl}/api/v1-alpha1/credentials/types/${typeName}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-API-KEY': this.apiKey,\n },\n body: JSON.stringify(schema),\n }\n )\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText })) as ErrorResponse\n throw new Error(`Failed to create credential type: ${JSON.stringify(error)}`)\n }\n\n return response.json() as Promise<CredentialType>\n }\n\n /**\n * Create a credential template\n */\n async createTemplate(\n typeId: string,\n metadata: {\n name: string\n description: string\n imageUrl: string\n }\n ): Promise<CredentialTemplate> {\n // Note: Ensuring trailing slash\n const response = await fetch(\n `${this.baseUrl}/api/v1-alpha1/credentials/templates/`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-API-KEY': this.apiKey,\n },\n body: JSON.stringify({\n credentials: {\n type: typeId,\n encryption: 'none',\n storage: 'crossmint',\n },\n metadata,\n chain: this.chain,\n }),\n }\n )\n\n if (!response.ok) {\n const text = await response.text();\n try {\n const error = JSON.parse(text);\n throw new Error(`Failed to create template: ${JSON.stringify(error)}`);\n } catch (e) {\n throw new Error(`Failed to create template (${response.status}): ${text}`);\n }\n }\n\n const action = await response.json() as ActionResponse\n // console.log(`Template Creation Action Started: ${action.id}`)\n \n // Poll for completion\n const result = await this.waitForAction(action.id)\n \n // Return the created template\n if (result.data && result.data.collection) {\n return result.data.collection;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (result.data || result) as any\n }\n\n /**\n * Poll an action until completion\n */\n async waitForAction(actionId: string): Promise<ActionResponse> {\n let retries = 0;\n while (retries < 60) { // 2 minutes timeout\n await new Promise(resolve => setTimeout(resolve, 2000));\n \n const response = await fetch(\n `${this.baseUrl}/api/2022-06-09/actions/${actionId}`,\n {\n headers: {\n 'X-API-KEY': this.apiKey,\n },\n }\n )\n\n if (!response.ok) {\n throw new Error(`Failed to poll action: ${response.statusText}`)\n }\n\n const action = await response.json() as ActionResponse\n \n if (action.status === 'succeeded') {\n return action\n }\n \n if (action.status === 'failed') {\n throw new Error(`Action failed: ${JSON.stringify(action)}`)\n }\n \n retries++\n }\n \n throw new Error('Action polling timed out')\n }\n\n // ===================================\n // Issuance\n // ===================================\n\n /**\n * Issue a credential using a template\n */\n async issueCredential(\n templateId: string,\n recipientEmail: string,\n subject: Record<string, unknown>,\n expiresAt?: string\n ): Promise<IssuedCredential> {\n const response = await fetch(\n `${this.baseUrl}/api/v1-alpha1/credentials/templates/${templateId}/vcs`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-API-KEY': this.apiKey,\n },\n body: JSON.stringify({\n recipient: `email:${recipientEmail}:${this.chain}`,\n credential: {\n subject,\n expiresAt: expiresAt || this.getDefaultExpiry(),\n },\n }),\n }\n )\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText })) as ErrorResponse\n throw new Error(`Failed to issue credential: ${JSON.stringify(error)}`)\n }\n\n return response.json() as Promise<IssuedCredential>\n }\n\n // ===================================\n // Verification & Retrieval\n // ===================================\n\n async getCredential(credentialId: string): Promise<unknown> {\n const response = await fetch(\n `${this.baseUrl}/api/v1-alpha1/credentials/${credentialId}`,\n {\n headers: {\n 'X-API-KEY': this.apiKey,\n },\n }\n )\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText })) as ErrorResponse\n throw new Error(`Failed to get credential: ${JSON.stringify(error)}`)\n }\n\n return response.json() as Promise<unknown>\n }\n\n async verifyCredential(credential: unknown): Promise<VerificationResult> {\n const response = await fetch(\n `${this.baseUrl}/api/v1-alpha1/credentials/verification/verify`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-API-KEY': this.apiKey,\n },\n body: JSON.stringify({ credential }),\n }\n )\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText })) as ErrorResponse\n throw new Error(`Failed to verify credential: ${JSON.stringify(error)}`)\n }\n\n return response.json() as Promise<VerificationResult>\n }\n\n async revokeCredential(credentialId: string): Promise<{ actionId: string; status: string }> {\n const response = await fetch(\n `${this.baseUrl}/api/v1-alpha1/credentials/${credentialId}`,\n {\n method: 'DELETE',\n headers: {\n 'X-API-KEY': this.apiKey,\n },\n }\n )\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText })) as ErrorResponse\n throw new Error(`Failed to revoke credential: ${JSON.stringify(error)}`)\n }\n\n return response.json() as Promise<{ actionId: string; status: string }>\n }\n\n private getDefaultExpiry(): string {\n const date = new Date()\n date.setFullYear(date.getFullYear() + 1)\n return date.toISOString().split('T')[0]\n }\n}\n","/**\n * GhostSpeak Credential Module\n *\n * Provides functionality for creating, signing, and exporting\n * W3C-compatible Verifiable Credentials.\n */\n\n\nimport { sha256 } from '@noble/hashes/sha256'\nimport type { Address } from '@solana/addresses'\n// Using simple string encoding for base58 to match SDK patterns if needed, \n// or usually @solana/addresses handles address strings.\n// We need bs58 for raw data encoding\nimport bs58 from 'bs58'\n\n// Helper for base58 encoding\nconst base58Encode = (data: Uint8Array): string => bs58.encode(data)\n\n// Constants\nexport const DEFAULT_PROGRAM_ID = 'GHosT3wqDfNq9bKz8dNEQ1F5mLuN7bKdNYx3Z1111111' as Address\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport enum CredentialKind {\n AgentIdentity = 'AgentIdentity',\n ReputationScore = 'ReputationScore',\n JobCompletion = 'JobCompletion',\n DelegatedSigner = 'DelegatedSigner',\n Custom = 'Custom',\n}\n\nexport enum CredentialStatus {\n Pending = 'Pending',\n Active = 'Active',\n Revoked = 'Revoked',\n Expired = 'Expired',\n}\n\nexport interface CredentialType {\n authority: string; // Address\n name: string;\n kind: CredentialKind;\n schemaUri: string;\n description: string;\n isActive: boolean;\n totalIssued: number;\n createdAt: number;\n}\n\nexport interface CredentialTemplate {\n credentialType: string; // Address\n name: string;\n imageUri: string;\n issuer: string; // Address\n isActive: boolean;\n totalIssued: number;\n createdAt: number;\n crossmintTemplateId?: string;\n}\n\nexport interface Credential {\n template: string; // Address\n subject: string; // Address\n issuer: string; // Address\n credentialId: string;\n subjectDataHash: Uint8Array;\n subjectDataUri: string;\n status: CredentialStatus;\n signature: Uint8Array;\n issuedAt: number;\n expiresAt?: number;\n revokedAt?: number;\n // Metadata\n crossmintCredentialId?: string;\n}\n\n// W3C Verifiable Credential Data Model v2.0\nexport interface W3CVerifiableCredential {\n '@context': string[];\n type: string[];\n id: string;\n issuer: {\n id: string;\n name?: string;\n } | string;\n validFrom: string;\n validUntil?: string;\n credentialSubject: {\n id?: string;\n [key: string]: unknown;\n };\n credentialSchema?: {\n id: string;\n type: 'JsonSchema';\n };\n credentialStatus?: {\n id: string;\n type: string;\n statusPurpose: 'revocation' | 'suspension';\n };\n relatedResource?: Array<{\n id: string;\n digestMultibase?: string;\n }>;\n proof: {\n type: 'DataIntegrityProof';\n created: string;\n verificationMethod: string;\n cryptosuite: 'eddsa-rdfc-2022';\n proofPurpose: 'assertionMethod';\n proofValue: string;\n };\n}\n\nexport class CredentialModule {\n private programId: Address\n\n constructor(programId: Address = DEFAULT_PROGRAM_ID) {\n this.programId = programId\n }\n\n // --------------------------------------------------------------------------\n // Hashing\n // --------------------------------------------------------------------------\n\n hashSubjectData(subjectData: Record<string, unknown>): Uint8Array {\n // Sort keys for deterministic hashing\n const json = JSON.stringify(subjectData, Object.keys(subjectData).sort());\n return sha256(new TextEncoder().encode(json));\n }\n\n generateCredentialId(kind: CredentialKind, subject: string): string {\n const timestamp = Date.now();\n const input = `${kind}-${subject}-${timestamp}`;\n const hash = sha256(new TextEncoder().encode(input));\n const shortHash = base58Encode(hash.slice(0, 8));\n return `${kind.toLowerCase()}-${shortHash}`;\n }\n\n // --------------------------------------------------------------------------\n // Export W3C\n // --------------------------------------------------------------------------\n\n exportAsW3CCredential(\n credential: Credential,\n template: CredentialTemplate,\n credentialType: CredentialType,\n subjectData: Record<string, unknown>,\n options?: {\n network?: 'mainnet' | 'devnet' | 'testnet'\n includeRelatedResource?: boolean\n }\n ): W3CVerifiableCredential {\n const network = options?.network || 'mainnet'\n const didPrefix = network === 'mainnet' ? 'did:sol:' : `did:sol:${network}:`\n\n // Note: PDA derivation is omitted here for simplicity as we don't have the heavy Buffer logic\n // We assume credential.verificationStatus is handled by the consumer verifying on-chain data\n // Or we add a simplified implementation if needed.\n \n // Simplification for ID generation to avoid complex PDA math in this module for now\n // In strict implementation, this status ID should calculate the exact PDA\n const statusId = `solana:${this.programId}:credential:${credential.credentialId}`;\n\n return {\n '@context': [\n 'https://www.w3.org/ns/credentials/v2',\n 'https://w3id.org/security/data-integrity/v2',\n 'https://ghostspeak.io/ns/credentials/v1',\n ],\n type: ['VerifiableCredential', `GhostSpeak${credentialType.kind}Credential`],\n id: `urn:ghostspeak:${credential.credentialId}`,\n issuer: {\n id: `${didPrefix}${this.programId}`,\n name: 'GhostSpeak Protocol',\n },\n validFrom: new Date(credential.issuedAt * 1000).toISOString(),\n validUntil: credential.expiresAt\n ? new Date(credential.expiresAt * 1000).toISOString()\n : undefined,\n credentialSubject: {\n id: `${didPrefix}${credential.subject}`,\n ...subjectData,\n },\n credentialSchema: {\n id: credentialType.schemaUri,\n type: 'JsonSchema',\n },\n credentialStatus: {\n id: statusId,\n type: 'SolanaAccountStatus2025',\n statusPurpose: 'revocation',\n },\n relatedResource: options?.includeRelatedResource\n ? [\n {\n id: credential.subjectDataUri,\n digestMultibase: `mEi${base58Encode(credential.subjectDataHash)}`,\n },\n ]\n : undefined,\n proof: {\n type: 'DataIntegrityProof',\n created: new Date(credential.issuedAt * 1000).toISOString(),\n verificationMethod: `${didPrefix}${this.programId}#key-1`,\n cryptosuite: 'eddsa-rdfc-2022',\n proofPurpose: 'assertionMethod',\n proofValue: base58Encode(credential.signature),\n },\n }\n }\n\n // --------------------------------------------------------------------------\n // Helpers for Subject Building\n // --------------------------------------------------------------------------\n\n static buildAgentIdentitySubject(params: {\n agentId: string;\n owner: string;\n name: string;\n capabilities: string[];\n serviceEndpoint: string;\n frameworkOrigin: string;\n x402Enabled: boolean;\n registeredAt: number;\n verifiedAt: number;\n }) {\n return params;\n }\n}\n","/**\n * Unified Credential Service\n * \n * Bridges GhostSpeak's native Solana credentials with Crossmint's EVM-based VCs.\n */\n\nimport type { Address } from '@solana/addresses'\nimport type { CrossmintClientOptions } from './CrossmintVCClient.js'\nimport { CrossmintVCClient } from './CrossmintVCClient.js'\nimport { \n CredentialModule, \n CredentialKind, \n CredentialStatus, \n type Credential, \n type CredentialTemplate, \n type CredentialType,\n type W3CVerifiableCredential \n} from './CredentialModule.js'\n\nexport interface UnifiedCredentialConfig {\n programId?: Address\n crossmint?: CrossmintClientOptions\n crossmintTemplates?: {\n agentIdentity?: string\n reputation?: string\n jobCompletion?: string\n }\n}\n\nexport interface IssuedCredentialResult {\n solanaCredential: {\n credentialId: string\n // signature would be here if we signed it\n }\n w3cCredential: W3CVerifiableCredential\n crossmintSync?: {\n status: 'pending' | 'synced' | 'failed'\n credentialId?: string\n chain?: string\n error?: string\n }\n}\n\nexport class UnifiedCredentialService {\n private credentialModule: CredentialModule\n private crossmintClient?: CrossmintVCClient\n \n constructor(private config: UnifiedCredentialConfig) {\n this.credentialModule = new CredentialModule(config.programId)\n \n if (config.crossmint) {\n this.crossmintClient = new CrossmintVCClient(config.crossmint)\n }\n }\n\n /**\n * Issue an Agent Identity credential.\n * Note: logic simplified for SDK usage (mocking the on-chain part for now as per original implementation)\n */\n async issueAgentIdentityCredential(params: {\n agentId: string\n owner: string // Address\n name: string\n capabilities: string[]\n serviceEndpoint: string\n frameworkOrigin: string\n x402Enabled: boolean\n registeredAt: number\n verifiedAt: number\n recipientEmail?: string\n syncToCrossmint?: boolean\n // Pre-calculated signature for the credential data\n signature: Uint8Array\n }): Promise<IssuedCredentialResult> {\n const subjectData = CredentialModule.buildAgentIdentitySubject({\n agentId: params.agentId,\n owner: params.owner,\n name: params.name,\n capabilities: params.capabilities,\n serviceEndpoint: params.serviceEndpoint,\n frameworkOrigin: params.frameworkOrigin,\n x402Enabled: params.x402Enabled,\n registeredAt: params.registeredAt,\n verifiedAt: params.verifiedAt,\n })\n\n const credentialId = this.credentialModule.generateCredentialId(\n CredentialKind.AgentIdentity,\n params.owner\n )\n\n const subjectDataHash = this.credentialModule.hashSubjectData(subjectData as unknown as Record<string, unknown>)\n\n // Create Credential Object\n const credential: Credential = {\n template: '11111111111111111111111111111111' as Address, // Placeholder Address\n subject: params.owner,\n issuer: params.owner, // Self-issued for agent identity usually, or program\n credentialId,\n subjectDataHash,\n subjectDataUri: `ipfs://placeholder/${credentialId}`,\n status: CredentialStatus.Active,\n signature: params.signature, // Use provided signature\n issuedAt: Math.floor(Date.now() / 1000),\n expiresAt: undefined,\n revokedAt: undefined,\n crossmintCredentialId: undefined,\n }\n\n // Create Type/Template structure required for W3C export\n const mockType: CredentialType = {\n authority: '11111111111111111111111111111111',\n name: 'AgentIdentity',\n kind: CredentialKind.AgentIdentity,\n schemaUri: 'https://ghostspeak.io/schemas/agent-identity.json',\n description: 'Verified AI agent identity on GhostSpeak Protocol',\n isActive: true,\n totalIssued: 1,\n createdAt: Math.floor(Date.now() / 1000),\n }\n\n const mockTemplate: CredentialTemplate = {\n credentialType: '11111111111111111111111111111111',\n name: 'GhostSpeak Agent Identity',\n imageUri: 'https://www.ghostspeak.io/assets/credential-agent.png',\n issuer: params.owner,\n isActive: true,\n totalIssued: 1,\n createdAt: Math.floor(Date.now() / 1000),\n crossmintTemplateId: this.config.crossmintTemplates?.agentIdentity,\n }\n\n const w3cCredential = this.credentialModule.exportAsW3CCredential(\n credential,\n mockTemplate,\n mockType,\n subjectData as unknown as Record<string, unknown>\n )\n\n const result: IssuedCredentialResult = {\n solanaCredential: {\n credentialId,\n },\n w3cCredential,\n }\n\n if (params.syncToCrossmint && this.crossmintClient && params.recipientEmail) {\n if (!mockTemplate.crossmintTemplateId) {\n result.crossmintSync = { status: 'failed', error: 'No template ID configured' }\n } else {\n try {\n const crossmintResult = await this.crossmintClient.issueCredential(\n mockTemplate.crossmintTemplateId,\n params.recipientEmail,\n subjectData as unknown as Record<string, unknown>\n // enrichedSubject... logic handled here or in client? \n // In web it was in syncToCrossmint.\n )\n result.crossmintSync = {\n status: 'synced',\n credentialId: crossmintResult.credentialId,\n chain: this.config.crossmint?.chain\n }\n } catch (error) {\n result.crossmintSync = {\n status: 'failed',\n error: error instanceof Error ? error.message : 'Unknown error'\n }\n }\n }\n }\n\n return result\n }\n}\n","import type { Address } from '@solana/addresses'\nimport type { TransactionSigner } from '@solana/kit'\nimport type { GhostSpeakConfig } from '../types/index.js'\nimport { GHOSTSPEAK_PROGRAM_ID } from '../types/index.js'\nimport { AgentModule } from './modules/AgentModule.js'\nimport { EscrowModule } from '../modules/escrow/EscrowModule.js'\nimport { ChannelModule } from '../modules/channels/ChannelModule.js'\nimport { MarketplaceModule } from '../modules/marketplace/MarketplaceModule.js'\nimport { GovernanceModule } from '../modules/governance/GovernanceModule.js'\nimport { MultisigModule } from '../modules/multisig/MultisigModule.js'\nimport { Token2022Module } from '../modules/token2022/Token2022Module.js'\nimport { UnifiedCredentialService } from '../modules/credentials/UnifiedCredentialService.js'\n// H2A Module has been removed - use A2A (Agent-to-Agent) instructions instead\nimport { ChannelType } from '../generated/types/channelType.js'\nimport { ProposalType } from '../generated/types/proposalType.js'\nimport { VoteChoice } from '../generated/types/voteChoice.js'\nimport type { AccountState } from '../generated/types/accountState.js'\n\n/**\n * Main GhostSpeak client with fluent API design\n * \n * Example usage:\n * ```typescript\n * const ghostspeak = new GhostSpeak()\n * \n * // Create an agent\n * const agent = await ghostspeak\n * .agent()\n * .create({ name: \"My Agent\", capabilities: [\"coding\"] })\n * .compressed()\n * .execute()\n * \n * // Create an escrow\n * const escrow = await ghostspeak\n * .escrow()\n * .between(buyer, seller)\n * .amount(sol(10))\n * .withMilestones([...])\n * .execute()\n * ```\n */\nexport class GhostSpeakClient {\n private config: GhostSpeakConfig\n \n constructor(config?: Partial<GhostSpeakConfig>) {\n // Zero-config setup with smart defaults\n this.config = {\n programId: GHOSTSPEAK_PROGRAM_ID,\n commitment: 'confirmed',\n cluster: 'devnet',\n rpcEndpoint: config?.rpcEndpoint ?? this.getDefaultRpcEndpoint(config?.cluster ?? 'devnet'),\n ...config,\n rpc: config?.rpc ?? {} as GhostSpeakConfig['rpc']\n }\n }\n\n /**\n * Agent operations\n */\n agent(): AgentBuilder {\n return new AgentBuilder(this.config)\n }\n\n /**\n * Escrow operations\n */\n escrow(): EscrowBuilder {\n return new EscrowBuilder(this.config)\n }\n\n /**\n * Channel operations\n */\n channel(): ChannelBuilder {\n return new ChannelBuilder(this.config)\n }\n\n /**\n * Marketplace operations\n */\n marketplace(): MarketplaceBuilder {\n return new MarketplaceBuilder(this.config)\n }\n\n /**\n * Governance operations\n */\n governance(): GovernanceBuilder {\n return new GovernanceBuilder(this.config)\n }\n\n /**\n * Multisig operations\n */\n multisig(): MultisigBuilder {\n return new MultisigBuilder(this.config)\n }\n\n /**\n * Token-2022 operations\n */\n token2022(): Token2022Builder {\n return new Token2022Builder(this.config)\n }\n\n /**\n * Unified Credential operations (Solana + Crossmint)\n */\n credentials(): UnifiedCredentialService {\n return new UnifiedCredentialService({\n programId: this.config.programId,\n crossmint: this.config.credentials?.crossmintApiKey ? {\n apiKey: this.config.credentials.crossmintApiKey,\n environment: this.config.credentials.crossmintEnvironment,\n chain: this.config.credentials.crossmintChain\n } : undefined,\n crossmintTemplates: this.config.credentials?.templates\n })\n }\n\n // H2A module has been removed - use A2A (Agent-to-Agent) instructions instead\n\n /**\n * Enable development mode features\n */\n enableDevMode(): this {\n console.log('🛠️ Development mode enabled')\n console.log(' - Transaction simulation before sending')\n console.log(' - Cost estimates for all operations')\n console.log(' - Enhanced error messages')\n \n this.config = {\n ...this.config,\n // Add dev mode flags\n }\n \n return this\n }\n\n /**\n * Configure network\n */\n useNetwork(cluster: 'mainnet-beta' | 'devnet' | 'testnet' | 'localnet'): this {\n this.config.cluster = cluster\n this.config.rpcEndpoint = this.getDefaultRpcEndpoint(cluster)\n return this\n }\n\n /**\n * Configure custom RPC\n */\n useRpc(endpoint: string, wsEndpoint?: string): this {\n this.config.rpcEndpoint = endpoint\n this.config.wsEndpoint = wsEndpoint\n return this\n }\n\n /**\n * Get default RPC endpoint for cluster\n */\n private getDefaultRpcEndpoint(cluster: string): string {\n switch (cluster) {\n case 'mainnet-beta':\n return 'https://api.mainnet-beta.solana.com'\n case 'devnet':\n return 'https://api.devnet.solana.com'\n case 'testnet':\n return 'https://api.testnet.solana.com'\n case 'localnet':\n return 'http://localhost:8899'\n default:\n return 'https://api.devnet.solana.com'\n }\n }\n}\n\n// =====================================================\n// FLUENT BUILDERS\n// =====================================================\n\n/**\n * Agent builder parameters interface\n */\ninterface AgentBuilderParams {\n agentType?: number\n metadataUri?: string\n agentId?: string\n compressed?: boolean\n forceIPFS?: boolean\n signer?: TransactionSigner\n name?: string\n description?: string\n}\n\n/**\n * Agent builder for fluent API\n */\nclass AgentBuilder {\n private module: AgentModule\n private params: AgentBuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new AgentModule(config)\n }\n\n create(params: { name: string; description?: string; capabilities: string[] }): this {\n this.params = {\n ...this.params,\n agentType: 0, // Default type\n metadataUri: JSON.stringify(params),\n agentId: params.name.toLowerCase().replace(/\\s+/g, '-'),\n name: params.name,\n description: params.description || ''\n }\n return this\n }\n\n withDescription(description: string): this {\n this.params.description = description\n return this\n }\n\n withType(agentType: number): this {\n this.params.agentType = agentType\n return this\n }\n\n withIPFS(): this {\n this.params.forceIPFS = true\n return this\n }\n\n compressed(): this {\n this.params.compressed = true\n return this\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n\n private validateParams(): void {\n if (!this.params.signer) {\n throw new Error('Agent builder requires a signer. Call with signer first.')\n }\n if (!this.params.metadataUri) {\n throw new Error('Agent builder requires metadata. Call create() first.')\n }\n if (!this.params.agentId) {\n throw new Error('Agent builder requires agent ID. Call create() first.')\n }\n this.params.agentType ??= 0 // Default type\n }\n\n async getCost(): Promise<bigint> {\n this.validateParams()\n return this.module.getCost('registerAgent', () => ({\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n }))\n }\n\n async simulate(): Promise<unknown> {\n const instruction = () => ({\n // Placeholder for actual instruction generation\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n })\n this.validateParams()\n return this.module.simulateInstruction('registerAgent', instruction, [this.params.signer!])\n }\n\n async explain(): Promise<string> {\n this.validateParams()\n return this.module.explain('registerAgent', () => ({\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n }))\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n if (this.params.compressed) {\n // Implementation would handle compressed agent creation\n console.log('Creating compressed agent (5000x cheaper)...')\n }\n \n const signature = await this.module.register(this.params.signer!, {\n agentType: this.params.agentType!,\n name: this.params.name!,\n description: this.params.description!,\n metadataUri: this.params.metadataUri!,\n agentId: this.params.agentId!\n })\n const address = await this.deriveAgentAddress(this.params.agentId!, this.params.signer!)\n \n return { address, signature }\n }\n\n private async deriveAgentAddress(agentId: string, signer: TransactionSigner): Promise<Address> {\n const { deriveAgentPda } = await import('../utils/pda.js')\n const [address] = await deriveAgentPda({ \n programAddress: this.module.getProgramId(), \n owner: signer.address, \n agentId \n })\n return address\n }\n}\n\n/**\n * Escrow builder parameters interface\n */\ninterface EscrowBuilderParams {\n buyer?: Address\n seller?: Address\n amount?: bigint\n description?: string\n milestones?: Array<{ amount: bigint; description: string }>\n signer?: TransactionSigner\n}\n\n/**\n * Escrow builder for fluent API\n */\nclass EscrowBuilder {\n private module: EscrowModule\n private params: EscrowBuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new EscrowModule(config)\n }\n\n between(buyer: Address, seller: Address): this {\n this.params.buyer = buyer\n this.params.seller = seller\n return this\n }\n\n amount(lamports: bigint): this {\n this.params.amount = lamports\n return this\n }\n\n description(desc: string): this {\n this.params.description = desc\n return this\n }\n\n withMilestones(milestones: Array<{ amount: bigint; description: string }>): this {\n this.params.milestones = milestones\n return this\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n\n private validateParams(): void {\n if (!this.params.buyer) {\n throw new Error('Escrow builder requires buyer address. Call between() first.')\n }\n if (!this.params.seller) {\n throw new Error('Escrow builder requires seller address. Call between() first.')\n }\n if (!this.params.amount) {\n throw new Error('Escrow builder requires amount. Call amount() first.')\n }\n if (!this.params.signer) {\n throw new Error('Escrow builder requires signer.')\n }\n }\n\n async getCost(): Promise<bigint> {\n return this.module.getCost('createEscrow', () => ({\n // Placeholder for actual instruction\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n }))\n }\n\n async explain(): Promise<string> {\n return this.module.explain('createEscrow', () => ({\n // Placeholder for actual instruction\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n }))\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n const signature = await this.module.create({\n signer: this.params.signer!,\n amount: this.params.amount!,\n buyer: this.params.buyer!,\n seller: this.params.seller!,\n description: this.params.description ?? '',\n milestones: this.params.milestones\n })\n // Generate a unique escrow ID\n const escrowId = `${Date.now()}_${Math.random().toString(36).substring(7)}`\n const address = await this.deriveEscrowAddress(escrowId)\n \n return { address, signature }\n }\n\n private async deriveEscrowAddress(escrowId: string): Promise<Address> {\n const { deriveEscrowPDA } = await import('../utils/pda.js')\n const [address] = await deriveEscrowPDA({\n client: this.params.buyer!,\n provider: this.params.seller!,\n escrowId,\n programAddress: this.module.getProgramId()\n })\n return address\n }\n}\n\n/**\n * Channel builder parameters interface\n */\ninterface ChannelBuilderParams {\n name?: string\n description?: string\n channelType?: ChannelType\n isPrivate?: boolean\n maxMembers?: number\n signer?: TransactionSigner\n}\n\n/**\n * Channel builder for fluent API\n */\nclass ChannelBuilder {\n private module: ChannelModule\n private params: ChannelBuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new ChannelModule(config)\n }\n\n create(name: string): this {\n this.params.name = name\n this.params.channelType = ChannelType.Public\n return this\n }\n\n description(desc: string): this {\n this.params.description = desc\n return this\n }\n\n private(): this {\n this.params.isPrivate = true\n this.params.channelType = ChannelType.Private\n return this\n }\n\n maxMembers(max: number): this {\n this.params.maxMembers = max\n return this\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n\n private validateParams(): void {\n if (!this.params.name) {\n throw new Error('Channel builder requires name. Call create() first.')\n }\n if (!this.params.signer) {\n throw new Error('Channel builder requires signer.')\n }\n }\n\n async getCost(): Promise<bigint> {\n return this.module.getCost('createChannel', () => ({\n // Placeholder for actual instruction\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n }))\n }\n\n async explain(): Promise<string> {\n return this.module.explain('createChannel', () => ({\n // Placeholder for actual instruction\n programAddress: this.module.getProgramId(),\n accounts: [],\n data: new Uint8Array()\n }))\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n const signature = await this.module.create({\n signer: this.params.signer!,\n name: this.params.name!,\n description: this.params.description ?? '',\n channelType: this.params.channelType ?? ChannelType.Public,\n isPrivate: this.params.isPrivate,\n maxMembers: this.params.maxMembers\n })\n // Generate a unique channel ID\n const channelId = `${this.params.name}_${Date.now()}`\n const address = await this.deriveChannelAddress(channelId)\n \n return { address, signature }\n }\n\n private async deriveChannelAddress(channelId: string): Promise<Address> {\n const { deriveChannelPda } = await import('../utils/pda.js')\n const address = await deriveChannelPda(\n this.module.getProgramId(),\n channelId\n )\n return address\n }\n}\n\n/**\n * Marketplace builder for fluent API\n */\nclass MarketplaceBuilder {\n private module: MarketplaceModule\n private params: MarketplaceBuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new MarketplaceModule(config)\n }\n\n /**\n * Create a service listing\n */\n service(): ServiceBuilder {\n return new ServiceBuilder(this.module, this.params)\n }\n\n /**\n * Create a job posting\n */\n job(): JobBuilder {\n return new JobBuilder(this.module, this.params)\n }\n\n /**\n * Create an auction\n */\n auction(): AuctionBuilder {\n return new AuctionBuilder(this.module, this.params)\n }\n\n /**\n * Get marketplace queries\n */\n query(): MarketplaceQuery {\n return new MarketplaceQuery(this.module)\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Marketplace builder parameters interface\n */\ninterface MarketplaceBuilderParams {\n signer?: TransactionSigner\n}\n\n/**\n * Service builder for fluent API\n */\nclass ServiceBuilder {\n private params: {\n title?: string\n description?: string\n pricePerHour?: bigint\n category?: string\n capabilities?: string[]\n agentAddress?: Address\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: MarketplaceModule, private builderParams: MarketplaceBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n create(params: { title: string; description: string; agentAddress: Address }): this {\n this.params.title = params.title\n this.params.description = params.description\n this.params.agentAddress = params.agentAddress\n return this\n }\n\n pricePerHour(price: bigint): this {\n this.params.pricePerHour = price\n return this\n }\n\n category(cat: string): this {\n this.params.category = cat\n return this\n }\n\n capabilities(caps: string[]): this {\n this.params.capabilities = caps\n return this\n }\n\n\n private validateParams(): void {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.title) throw new Error('Title required')\n if (!this.params.description) throw new Error('Description required')\n if (!this.params.agentAddress) throw new Error('Agent address required')\n if (!this.params.pricePerHour) throw new Error('Price per hour required')\n if (!this.params.category) throw new Error('Category required')\n if (!this.params.capabilities) throw new Error('Capabilities required')\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n const signature = await this.module.createServiceListing({\n signer: this.params.signer!,\n agentAddress: this.params.agentAddress!,\n title: this.params.title!,\n description: this.params.description!,\n pricePerHour: this.params.pricePerHour!,\n category: this.params.category!,\n capabilities: this.params.capabilities!\n })\n \n const address = `service_${this.params.agentAddress}_${this.params.title}` as Address\n return { address, signature }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Job builder for fluent API\n */\nclass JobBuilder {\n private params: {\n title?: string\n description?: string\n budget?: bigint\n duration?: number\n requiredSkills?: string[]\n category?: string\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: MarketplaceModule, private builderParams: MarketplaceBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n create(params: { title: string; description: string }): this {\n this.params.title = params.title\n this.params.description = params.description\n return this\n }\n\n budget(amount: bigint): this {\n this.params.budget = amount\n return this\n }\n\n duration(hours: number): this {\n this.params.duration = hours\n return this\n }\n\n skills(skillList: string[]): this {\n this.params.requiredSkills = skillList\n return this\n }\n\n category(cat: string): this {\n this.params.category = cat\n return this\n }\n\n private validateParams(): void {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.title) throw new Error('Title required')\n if (!this.params.description) throw new Error('Description required')\n if (!this.params.budget) throw new Error('Budget required')\n if (!this.params.duration) throw new Error('Duration required')\n if (!this.params.requiredSkills) throw new Error('Required skills needed')\n if (!this.params.category) throw new Error('Category required')\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n const signature = await this.module.createJobPosting({\n signer: this.params.signer!,\n title: this.params.title!,\n description: this.params.description!,\n budget: this.params.budget!,\n duration: this.params.duration!,\n requiredSkills: this.params.requiredSkills!,\n category: this.params.category!\n })\n \n const address = `job_${this.params.signer!.address}_${this.params.title}` as Address\n return { address, signature }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Auction builder for fluent API\n */\nclass AuctionBuilder {\n private params: {\n serviceListingAddress?: Address\n startingPrice?: bigint\n reservePrice?: bigint\n duration?: number\n auctionType?: 'english' | 'dutch'\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: MarketplaceModule, private builderParams: MarketplaceBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n forService(serviceAddress: Address): this {\n this.params.serviceListingAddress = serviceAddress\n return this\n }\n\n startingPrice(price: bigint): this {\n this.params.startingPrice = price\n return this\n }\n\n reservePrice(price: bigint): this {\n this.params.reservePrice = price\n return this\n }\n\n duration(hours: number): this {\n this.params.duration = hours\n return this\n }\n\n english(): this {\n this.params.auctionType = 'english'\n return this\n }\n\n dutch(): this {\n this.params.auctionType = 'dutch'\n return this\n }\n\n private validateParams(): void {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.serviceListingAddress) throw new Error('Service listing address required')\n if (!this.params.startingPrice) throw new Error('Starting price required')\n if (!this.params.reservePrice) throw new Error('Reserve price required')\n if (!this.params.duration) throw new Error('Duration required')\n if (!this.params.auctionType) throw new Error('Auction type required')\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n const signature = await this.module.createServiceAuction({\n signer: this.params.signer!,\n serviceListingAddress: this.params.serviceListingAddress!,\n startingPrice: this.params.startingPrice!,\n reservePrice: this.params.reservePrice!,\n duration: this.params.duration!,\n auctionType: this.params.auctionType!\n })\n \n const address = `auction_${this.params.serviceListingAddress}` as Address\n return { address, signature }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Marketplace query helper\n */\nclass MarketplaceQuery {\n constructor(private module: MarketplaceModule) {}\n\n async serviceListings() {\n return this.module.getAllServiceListings()\n }\n\n async serviceListingsByCategory(_category: string) {\n // Filter all listings by category (placeholder implementation)\n const allListings = await this.module.getAllServiceListings()\n return allListings.filter(_listing => {\n // Would check listing.data.category === category in real implementation\n // For now, return all listings since category filtering is not implemented\n return allListings.length > 0\n })\n }\n\n async jobPostings() {\n return this.module.getAllJobPostings()\n }\n\n async auctions() {\n return this.module.getAllAuctions()\n }\n}\n\n/**\n * Governance builder for fluent API\n */\nclass GovernanceBuilder {\n private module: GovernanceModule\n private params: GovernanceBuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new GovernanceModule(config)\n }\n\n /**\n * Create a governance proposal\n */\n proposal(): ProposalBuilder {\n return new ProposalBuilder(this.module, this.params)\n }\n\n /**\n * Get governance queries\n */\n query(): GovernanceQuery {\n return new GovernanceQuery(this.module)\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Governance builder parameters interface\n */\ninterface GovernanceBuilderParams {\n signer?: TransactionSigner\n}\n\n/**\n * Proposal builder for fluent API\n */\nclass ProposalBuilder {\n private params: {\n title?: string\n description?: string\n proposalType?: 'parameter_change' | 'upgrade' | 'treasury'\n votingDuration?: number\n executionDelay?: number\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: GovernanceModule, private builderParams: GovernanceBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n create(params: { title: string; description: string }): this {\n this.params.title = params.title\n this.params.description = params.description\n return this\n }\n\n type(proposalType: 'parameter_change' | 'upgrade' | 'treasury'): this {\n this.params.proposalType = proposalType\n return this\n }\n\n votingDuration(hours: number): this {\n this.params.votingDuration = hours\n return this\n }\n\n executionDelay(hours: number): this {\n this.params.executionDelay = hours\n return this\n }\n\n private validateParams(): void {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.title) throw new Error('Title required')\n if (!this.params.description) throw new Error('Description required')\n if (!this.params.proposalType) throw new Error('Proposal type required')\n if (!this.params.votingDuration) throw new Error('Voting duration required')\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n const signature = await this.module.createProposal({\n signer: this.params.signer!,\n title: this.params.title!,\n description: this.params.description!,\n proposalType: this.params.proposalType!,\n votingDuration: this.params.votingDuration!,\n executionDelay: this.params.executionDelay\n })\n \n const address = `proposal_${this.params.signer!.address}_${this.params.title}` as Address\n return { address, signature }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Governance query helper\n */\nclass GovernanceQuery {\n constructor(private module: GovernanceModule) {}\n\n async activeProposals() {\n return this.module.getActiveProposals()\n }\n\n async proposalsByProposer(proposer: Address) {\n return this.module.getProposalsByProposer(proposer)\n }\n\n async proposalsByStatus(status: 'draft' | 'voting' | 'succeeded' | 'defeated' | 'executed') {\n return this.module.getProposalsByStatus(status)\n }\n}\n\n/**\n * Multisig builder for fluent API\n */\nclass MultisigBuilder {\n private module: MultisigModule\n private params: MultisigBuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new MultisigModule(config)\n }\n\n create(): CreateMultisigBuilder {\n return new CreateMultisigBuilder(this.module, this.params)\n }\n\n proposal(): MultisigProposalBuilder {\n return new MultisigProposalBuilder(this.module, this.params)\n }\n\n approve(): MultisigApproveBuilder {\n return new MultisigApproveBuilder(this.module, this.params)\n }\n\n executeProposal(): MultisigExecuteBuilder {\n return new MultisigExecuteBuilder(this.module, this.params)\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n}\n\ninterface MultisigBuilderParams {\n signer?: TransactionSigner\n}\n\nclass CreateMultisigBuilder {\n private params: {\n multisigId?: bigint\n threshold?: number\n signers?: Address[]\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: MultisigModule, private builderParams: MultisigBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n withId(id: bigint): this {\n this.params.multisigId = id\n return this\n }\n\n threshold(t: number): this {\n this.params.threshold = t\n return this\n }\n\n signers(s: Address[]): this {\n this.params.signers = s\n return this\n }\n\n async execute(): Promise<{ signature: string }> {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.multisigId) throw new Error('Multisig ID required')\n if (!this.params.threshold) throw new Error('Threshold required')\n if (!this.params.signers) throw new Error('Signers required')\n\n return {\n signature: await this.module.createMultisig({\n owner: this.params.signer,\n multisigId: this.params.multisigId,\n threshold: this.params.threshold,\n signers: this.params.signers\n })\n }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\nclass MultisigProposalBuilder {\n private params: {\n multisigAddress?: Address\n title?: string\n description?: string\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: MultisigModule, private builderParams: MultisigBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n forMultisig(address: Address): this {\n this.params.multisigAddress = address\n return this\n }\n\n title(t: string): this {\n this.params.title = t\n return this\n }\n\n description(d: string): this {\n this.params.description = d\n return this\n }\n\n async execute(): Promise<{ signature: string }> {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.title) throw new Error('Title required')\n if (!this.params.description) throw new Error('Description required')\n \n // Placeholder execution since we simplified createProposal in module\n // We would need more params in a real app (execution params, type etc)\n // For now we just call it with minimal dummy data to prove wiring\n return {\n signature: await this.module.createProposal({\n multisigAddress: this.params.multisigAddress!,\n title: this.params.title,\n description: this.params.description,\n proposalType: ProposalType.Custom,\n executionParams: {\n instructions: [],\n executionDelay: 0n,\n executionConditions: [],\n cancellable: true,\n autoExecute: true,\n executionAuthority: this.params.signer.address\n },\n proposalId: BigInt(Date.now()),\n proposer: this.params.signer\n })\n }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\nclass MultisigApproveBuilder {\n private params: {\n proposalAddress?: Address\n voteChoice?: VoteChoice\n reasoning?: string\n signer?: TransactionSigner\n tokenAccount?: Address\n } = {}\n\n constructor(private module: MultisigModule, private builderParams: MultisigBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n proposal(address: Address): this {\n this.params.proposalAddress = address\n return this\n }\n\n vote(choice: VoteChoice): this {\n this.params.voteChoice = choice\n return this\n }\n\n reason(text: string): this {\n this.params.reasoning = text\n return this\n }\n\n tokenAccount(account: Address): this {\n this.params.tokenAccount = account\n return this\n }\n\n async execute(): Promise<{ signature: string }> {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.proposalAddress) throw new Error('Proposal address required')\n \n // Default to 'For' if token account provided but choice isn't\n const voteChoice = this.params.voteChoice ?? VoteChoice.For\n \n // In a real scenario, we might need to derive the token account if not provided\n // For now we assume it's provided or we use a dummy one if acceptable by the logic\n if (!this.params.tokenAccount) throw new Error('Voter token account required')\n\n return {\n signature: await this.module.approveProposal({\n proposalAddress: this.params.proposalAddress,\n voter: this.params.signer,\n voterTokenAccount: this.params.tokenAccount,\n voteChoice,\n reasoning: this.params.reasoning\n })\n }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\nclass MultisigExecuteBuilder {\n private params: {\n proposalAddress?: Address\n targetProgram?: Address\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: MultisigModule, private builderParams: MultisigBuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n proposal(address: Address): this {\n this.params.proposalAddress = address\n return this\n }\n\n target(programId: Address): this {\n this.params.targetProgram = programId\n return this\n }\n\n async execute(): Promise<{ signature: string }> {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.proposalAddress) throw new Error('Proposal address required')\n if (!this.params.targetProgram) throw new Error('Target program required')\n\n return {\n signature: await this.module.executeProposal({\n proposalAddress: this.params.proposalAddress,\n executor: this.params.signer,\n targetProgram: this.params.targetProgram\n })\n }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Token2022 builder for fluent API\n */\nclass Token2022Builder {\n private module: Token2022Module\n private params: Token2022BuilderParams = {}\n\n constructor(config: GhostSpeakConfig) {\n this.module = new Token2022Module(config)\n }\n\n /**\n * Create a basic mint\n */\n mint(): MintBuilder {\n return new MintBuilder(this.module, this.params)\n }\n\n /**\n * Get Token2022 queries\n */\n query(): Token2022Query {\n return new Token2022Query(this.module)\n }\n\n debug(): this {\n this.module.debug()\n return this\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Token2022 builder parameters interface\n */\ninterface Token2022BuilderParams {\n signer?: TransactionSigner\n}\n\n/**\n * Mint builder for fluent API\n */\nclass MintBuilder {\n private params: {\n agentAddress?: Address\n decimals?: number\n freezeAuthority?: Address\n enableTransferFees?: boolean\n transferFeeBasisPoints?: number\n maxFee?: bigint\n enableConfidentialTransfers?: boolean\n autoApproveConfidential?: boolean\n enableInterestBearing?: boolean\n interestRate?: number\n defaultAccountState?: AccountState\n signer?: TransactionSigner\n } = {}\n\n constructor(private module: Token2022Module, private builderParams: Token2022BuilderParams) {\n this.params.signer = builderParams.signer\n }\n\n forAgent(agentAddress: Address): this {\n this.params.agentAddress = agentAddress\n return this\n }\n\n decimals(dec: number): this {\n this.params.decimals = dec\n return this\n }\n\n freezeAuthority(authority: Address): this {\n this.params.freezeAuthority = authority\n return this\n }\n\n withTransferFees(basisPoints: number, maxFee: bigint): this {\n this.params.enableTransferFees = true\n this.params.transferFeeBasisPoints = basisPoints\n this.params.maxFee = maxFee\n return this\n }\n\n withConfidentialTransfers(autoApprove = false): this {\n this.params.enableConfidentialTransfers = true\n this.params.autoApproveConfidential = autoApprove\n return this\n }\n\n withInterestBearing(rate: number): this {\n this.params.enableInterestBearing = true\n this.params.interestRate = rate\n return this\n }\n\n defaultAccountState(state: AccountState): this {\n this.params.defaultAccountState = state\n return this\n }\n\n private validateParams(): void {\n if (!this.params.signer) throw new Error('Signer required')\n if (!this.params.agentAddress) throw new Error('Agent address required')\n if (this.params.decimals === undefined) throw new Error('Decimals required')\n if (this.params.enableTransferFees && (!this.params.transferFeeBasisPoints || !this.params.maxFee)) {\n throw new Error('Transfer fee parameters required when fees enabled')\n }\n if (this.params.enableInterestBearing && this.params.interestRate === undefined) {\n throw new Error('Interest rate required when interest bearing enabled')\n }\n }\n\n async execute(): Promise<{ address: Address; signature: string }> {\n this.validateParams()\n \n // ... implementation ...\n let signature: string\n \n // Determine which creation method to use based on enabled features\n const hasMultipleFeatures = [\n this.params.enableTransferFees,\n this.params.enableConfidentialTransfers,\n this.params.enableInterestBearing,\n this.params.defaultAccountState\n ].filter(Boolean).length > 1\n\n if (hasMultipleFeatures) {\n // Use advanced mint creation for multiple features\n signature = await this.module.createAdvancedMint({\n signer: this.params.signer!,\n agentAddress: this.params.agentAddress!,\n decimals: this.params.decimals!,\n transferFeeBasisPoints: this.params.transferFeeBasisPoints ?? 0,\n maxFee: this.params.maxFee ?? BigInt(0),\n interestRate: this.params.interestRate ?? 0,\n autoApproveConfidential: this.params.autoApproveConfidential,\n defaultAccountState: this.params.defaultAccountState\n })\n } else if (this.params.enableTransferFees) {\n signature = await this.module.createMintWithTransferFees({\n signer: this.params.signer!,\n agentAddress: this.params.agentAddress!,\n decimals: this.params.decimals!,\n transferFeeBasisPoints: this.params.transferFeeBasisPoints!,\n maxFee: this.params.maxFee!\n })\n } else if (this.params.enableConfidentialTransfers) {\n signature = await this.module.createMintWithConfidentialTransfers({\n signer: this.params.signer!,\n agentAddress: this.params.agentAddress!,\n decimals: this.params.decimals!,\n autoApproveNewAccounts: this.params.autoApproveConfidential\n })\n } else if (this.params.enableInterestBearing) {\n signature = await this.module.createMintWithInterestBearing({\n signer: this.params.signer!,\n agentAddress: this.params.agentAddress!,\n decimals: this.params.decimals!,\n interestRate: this.params.interestRate!\n })\n } else {\n // Basic mint\n signature = await this.module.createMint({\n signer: this.params.signer!,\n agentAddress: this.params.agentAddress!,\n decimals: this.params.decimals!,\n freezeAuthority: this.params.freezeAuthority\n })\n }\n \n const address = `mint_${this.params.agentAddress}_${this.params.decimals}` as Address\n return { address, signature }\n }\n\n withSigner(signer: TransactionSigner): this {\n this.params.signer = signer\n return this\n }\n}\n\n/**\n * Token2022 query helper\n */\nclass Token2022Query {\n constructor(private module: Token2022Module) {}\n\n async allMints() {\n return this.module.getAllMints()\n }\n\n async mintsByAuthority(authority: Address) {\n return this.module.getMintsByAuthority(authority)\n }\n}\n\n// H2A Communication builders have been removed - use A2A (Agent-to-Agent) instructions instead\n\n// =====================================================\n// CONVENIENCE FUNCTIONS\n// =====================================================\n\n/**\n * Convert SOL to lamports\n */\nexport function sol(amount: number): bigint {\n return BigInt(Math.floor(amount * 1_000_000_000))\n}\n\n/**\n * Convert lamports to SOL\n */\nexport function lamportsToSol(lamports: bigint): number {\n return Number(lamports) / 1_000_000_000\n}\n\n// Default export for easy importing\nexport default GhostSpeakClient"]}
|