{"version":3,"sources":["../thru-ts-client-sdk/modules/compression/types.ts"],"names":[],"mappings":";;;AA4GO,IAAM,gBAAA,GAAN,cAA+B,KAAA,CAAM;AAAA,EAE1C,WAAA,CACkB,IAAA,EAChB,OAAA,EACgB,OAAA,GAQZ,EAAC,EACL;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAZG,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAWhB,IAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,KAAA;AACrB,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA,EACd;AACF","file":"compression.cjs","sourcesContent":["import type { TransactionFeePayerConfig } from '../transactions';\nimport type { ThruTransactionIntent } from '../../domain/transactions/intent';\n\nexport interface PendingCompressionTransaction {\n  signature: string;\n  nonce: bigint;\n  validUntilSlot: bigint;\n}\n\n/** A durable journal belongs to one network and fee payer; never store keys in it. */\nexport interface CompressionJournal {\n  load(): Promise<PendingCompressionTransaction | undefined>;\n  save(pending: PendingCompressionTransaction | undefined): Promise<void>;\n  /** Persist cleanup handles before an uploader creation transaction may be sent. */\n  saveUpload?(upload: UploadCleanup): Promise<void>;\n}\n\nexport interface CompressionOptions {\n  programAddresses?: { compression?: string; multicall?: string; uploader?: string; passkeyManager?: string };\n  signal?: AbortSignal;\n  fee?: bigint;\n  timeoutMs?: number;\n  pollIntervalMs?: number;\n  maxTransactionBytes?: number;\n  journal?: CompressionJournal;\n}\n\nexport type KeypairCompressionOptions = CompressionOptions & {\n  feePayer: TransactionFeePayerConfig & { privateKey: Uint8Array };\n  walletAddress?: never;\n  signTransaction?: never;\n};\n\n/** Uses the wallet's existing intent -> base64 signed transaction contract. */\nexport type WalletCompressionOptions = CompressionOptions & {\n  feePayer: Pick<TransactionFeePayerConfig, 'publicKey'> & { privateKey?: never };\n  walletAddress: string;\n  signTransaction(intent: ThruTransactionIntent): Promise<string>;\n};\n\nexport type DecompressionOptions = KeypairCompressionOptions | WalletCompressionOptions;\n\nexport interface AccountState {\n  address: string;\n  slot?: bigint;\n  deleted: boolean;\n  uncompressable: boolean;\n  ephemeral: boolean;\n  isNew: boolean;\n  dataSize: number;\n  balance: bigint;\n  nonce: bigint;\n}\n\nexport interface AccountImage extends AccountState {\n  /** Runtime image: two-byte prefix followed by the 62-byte SDK metadata. */\n  meta: Uint8Array;\n  data: Uint8Array;\n}\n\nexport interface AccountIndices {\n  getAccountIndex(address: string): number;\n  /** Byte offset of this root instruction within the unsigned transaction wire image. */\n  instructionDataOffset: number;\n}\n\nexport type Instruction = (context: AccountIndices) => Uint8Array | Promise<Uint8Array>;\n\nexport interface CompressionTransaction {\n  program: string;\n  readWrite: string[];\n  readOnly?: string[];\n  instructionData: Instruction;\n  stateUnits: number;\n  computeUnits: number;\n  flags?: number;\n  /** Internal bootstrap transaction for an archived, zero-data EOA payer. */\n  payerRestoration?: { image: AccountImage; proof: Uint8Array };\n}\n\nexport interface UploadPair {\n  meta: string;\n  buffer: string;\n}\n\nexport type AccountOutcome = {\n  address: string;\n  status: \"active\" | \"restored\" | \"compressed\" | \"deleted\" | \"skipped\";\n  signatures: string[];\n};\n\nexport interface UploadCleanup extends UploadPair {\n  /** Retain the original uploader for cleanup after configuration changes/restarts. */\n  uploader?: string;\n  status: \"pending\" | \"cleaned\" | \"failed\";\n  error?: string;\n}\n\nexport interface CompressionResult {\n  accounts: AccountOutcome[];\n  signatures: string[];\n  uploads: UploadCleanup[];\n}\n\nexport type CompressionErrorCode = \"MISSING_ACCOUNT\" | \"NOT_READY\" | \"INVALID_IMAGE\" |\n  \"TRANSACTION_TOO_LARGE\" | \"TRANSACTION_FAILED\" | \"TRANSACTION_UNCERTAIN\" |\n  \"RPC_ERROR\" | \"CANCELLED\" | \"CLEANUP_FAILED\";\n\nexport class CompressionError extends Error {\n  readonly cause?: unknown;\n  constructor(\n    public readonly code: CompressionErrorCode,\n    message: string,\n    public readonly details: {\n      address?: string;\n      retrySlot?: bigint;\n      signature?: string;\n      vmError?: number;\n      userErrorCode?: bigint;\n      result?: CompressionResult;\n      cause?: unknown;\n    } = {},\n  ) {\n    super(message);\n    this.cause = details.cause;\n    this.name = \"CompressionError\";\n  }\n}\n"]}