{"version":3,"sources":["../src/core.ts","../src/transaction.ts"],"names":["Chain","Currency","ChainToken","OnChainTxStatus"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Core configuration and environment types\n */\n\nexport interface ChipiSDKConfig {\n  apiPublicKey: string;\n  alphaUrl?: string;\n  nodeUrl?: string;\n  apiSecretKey?: string;\n}\n\nexport interface ChipiServerSDKConfig extends ChipiSDKConfig {\n  apiSecretKey: string;\n}\n\nexport interface ChipiBrowserSDKConfig extends Omit<ChipiSDKConfig, \"apiSecretKey\"> {\n  apiSecretKey?: never;\n}\n\nexport type alphaUrl = string;\n\nexport enum Chain {\n  STARKNET = \"STARKNET\",\n  BASE = \"BASE\",\n  ARBITRUM = \"ARBITRUM\",\n  OPTIMISM = \"OPTIMISM\",\n  ROOTSTOCK = \"ROOTSTOCK\",\n  SCROLL = \"SCROLL\",\n  WORLDCHAIN = \"WORLDCHAIN\",\n}\n\nexport enum Currency {\n  MXN = \"MXN\",\n  USD = \"USD\",\n}\n\nexport enum ChainToken {\n  USDC = \"USDC\",\n  USDC_E = \"USDC_E\",\n  USDT = \"USDT\",\n  DAI = \"DAI\",\n  ETH = \"ETH\",\n  STRK = \"STRK\",\n  SLINK = \"SLINK\",\n  ALF = \"ALF\",\n  BROTHER = \"BROTHER\",\n  ARB = \"ARB\",\n  DOC = \"DOC\",\n  MXNB = \"MXNB\",\n  WLD = \"WLD\",\n  WBTC = \"WBTC\",\n  OTHER = \"OTHER\",\n}\n\nexport interface PaginationQuery {\n  page?: number;\n  limit?: number;\n  offset?: number;\n}\n\nexport interface PaginatedResponse<T> {\n  data: T[];\n  total: number;\n  page: number;\n  limit: number;\n  totalPages: number;\n}\n\nexport const STARKNET_CONTRACTS: Record<ChainToken, { contractAddress: string; decimals: number }> =\n  {\n    [ChainToken.USDC]: {\n      contractAddress: \"0x033068F6539f8e6e6b131e6B2B814e6c34A5224bC66947c47DaB9dFeE93b35fb\",\n      decimals: 6,\n    },\n    [ChainToken.USDC_E]: {\n      contractAddress: \"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8\",\n      decimals: 6,\n    },\n    [ChainToken.USDT]: {\n      contractAddress: \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n      decimals: 6,\n    },\n    [ChainToken.DAI]: {\n      contractAddress: \"0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad\",\n      decimals: 18,\n    },\n    [ChainToken.STRK]: {\n      contractAddress: \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n      decimals: 18,\n    },\n    [ChainToken.ETH]: {\n      contractAddress: \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n      decimals: 18,\n    },\n    [ChainToken.WBTC]: {\n      contractAddress: \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n      decimals: 8,\n    },\n    [ChainToken.SLINK]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.ALF]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.BROTHER]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.ARB]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.DOC]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.MXNB]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.WLD]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n    [ChainToken.OTHER]: {\n      contractAddress: \"\",\n      decimals: 18,\n    },\n  };\n","import type { Call, TypedData } from \"starknet\";\nimport type { WalletData, WalletType } from \"./wallet\";\nimport { Chain, ChainToken, Currency } from \"./core\";\n\n/**\n * Transaction-related types\n */\n\ntype PasskeyEnabledParams = {\n  usePasskey: true;\n  externalUserId: string;\n};\n\ntype PasskeyDisabledParams = {\n  usePasskey?: false;\n  externalUserId?: string;\n};\n\ntype PasskeyParams = PasskeyEnabledParams | PasskeyDisabledParams;\n\nexport type ExecuteTransactionParams = PasskeyParams & {\n  encryptKey?: string;\n  wallet: WalletData;\n  calls: Call[];\n};\n\nexport type TxType = string;\nexport type TxStatus = \"PENDING\" | \"PROCESSING\" | \"SUCCESS\" | \"FAILED\" | \"CANCELLED\";\n\nexport interface Transaction {\n  id: string;\n  type: TxType;\n  subType?: string;\n  chain: Chain;\n  transactionHash: string;\n\n  // Parties\n  senderAddress: string;\n  destinationAddress: string;\n\n  // Contract Interaction\n  contractAddress?: string;\n  contractName?: string;\n  functionName?: string;\n  functionSelector?: string;\n  callData?: unknown;\n\n  // Token Transfer (nullable for non-token operations)\n  token?: ChainToken;\n  tokenAddress?: string;\n  amount?: string;\n\n  // NFT Specific\n  nftTokenId?: string;\n  nftContract?: string;\n  nftMetadata?: Record<string, unknown>;\n\n  // SKU Specific\n  skuId?: string;\n  skuReference?: string;\n  skuPurchaseAmount?: number;\n  skuPurchaseCurrency?: Currency;\n  skuFileNumber?: string;\n\n  // Status\n  status: TxStatus;\n\n  // Timestamps\n  createdAt: Date;\n  confirmedAt?: Date;\n  updatedAt: Date;\n\n  // Relations\n  apiPublicKey: string;\n  chipiWalletId?: string;\n  destinationChipiWalletId?: string;\n}\n\nexport interface PrepareTypedDataParams {\n  calls: Call[];\n  walletAddress: string;\n}\n\nexport interface PrepareTypedDataResponse {\n  typedData: TypedData;\n  walletType: WalletType;\n}\n\nexport interface ExecuteSponsoredTransactionParams {\n  calls: Call[];\n  walletAddress: string;\n  signature: string[];\n  apiPublicKey: string;\n}\n\nexport interface ExecuteSponsoredTransactionResponse {\n  transactionHash: string;\n}\n\nexport interface RecordSendTransactionParams {\n  transactionHash: string;\n  expectedSender: string;\n  expectedRecipient: string;\n  expectedToken: ChainToken;\n  expectedAmount: string;\n  chain: Chain;\n}\n\n// Specific transaction types\nexport type TransferParams = PasskeyParams & {\n  encryptKey?: string;\n  wallet: WalletData;\n  token: ChainToken;\n  otherToken?: {\n    contractAddress: string;\n    decimals: number;\n  };\n  recipient: string;\n  amount: string;\n};\n\nexport type TransferHookInput = PasskeyParams & {\n  encryptKey?: string;\n  wallet: WalletData;\n  token: ChainToken;\n  otherToken?: {\n    contractAddress: string;\n    decimals: number;\n  };\n  recipient: string;\n  amount: number;\n};\n\nexport type ApproveParams = PasskeyParams & {\n  encryptKey?: string;\n  wallet: WalletData;\n  contractAddress: string;\n  spender: string;\n  amount: string;\n  decimals?: number;\n};\n\nexport type ApproveHookInput = PasskeyParams & {\n  encryptKey?: string;\n  wallet: WalletData;\n  contractAddress: string;\n  spender: string;\n  decimals?: number;\n  amount: number;\n};\n\nexport type CallAnyContractParams = PasskeyParams & {\n  encryptKey?: string;\n  wallet: WalletData;\n  contractAddress: string;\n  calls: Call[];\n};\n\nexport interface GetTransactionsParams {\n  page?: number;\n  limit?: number;\n  orgId: string;\n}\n\nexport interface GetTransactionListQuery {\n  page?: number;\n  limit?: number;\n  calledFunction?: string;\n  walletAddress: string; // Required: wallet address to filter transactions\n  day?: number; // Day of the month (1-31)\n  month?: number; // Month of the year (1-12)\n  year?: number; // Year (e.g., 2025)\n}\n\n/**\n * Parameters for fetching a single transaction by hash or internal ID.\n */\nexport interface GetTransactionParams {\n  /** Transaction hash (0x...) or internal database ID */\n  hashOrId: string;\n}\n\n/**\n * Parameters for fetching on-chain transaction status.\n */\nexport interface GetTransactionStatusParams {\n  /** Transaction hash (0x...) */\n  hash: string;\n}\n\n/**\n * On-chain transaction status from StarkNet sequencer.\n */\nexport enum OnChainTxStatus {\n  RECEIVED = \"RECEIVED\",\n  PENDING = \"PENDING\",\n  ACCEPTED_ON_L2 = \"ACCEPTED_ON_L2\",\n  ACCEPTED_ON_L1 = \"ACCEPTED_ON_L1\",\n  REJECTED = \"REJECTED\",\n  REVERTED = \"REVERTED\",\n  NOT_RECEIVED = \"NOT_RECEIVED\",\n}\n\n/**\n * Response from the transaction status endpoint.\n */\nexport interface TransactionStatusResponse {\n  /** Transaction hash */\n  transactionHash: string;\n  /** Current on-chain status */\n  status: OnChainTxStatus;\n  /** Block number (if included in a block) */\n  blockNumber?: number;\n  /** Revert reason (if status is REVERTED) */\n  revertReason?: string;\n}\n\n/**\n * Minimal account interface for PaymasterAdapter.\n * Compatible with starknet.js Account, external wallet objects, and Cartridge Controller.\n */\nexport interface PaymasterAccount {\n  address: string;\n  signMessage(typedData: TypedData): Promise<unknown>;\n  getClassHashAt(contractAddress: string): Promise<string>;\n}\n\n/**\n * Adapter for executing gasless (paymaster-sponsored) transactions.\n *\n * Handles the full flow: prepare typed data -> sign -> submit to paymaster.\n * For external wallets (Argent X, Braavos), `account.signMessage()` triggers the wallet popup.\n * For DirectSigner, signing happens programmatically.\n */\nexport interface PaymasterAdapter {\n  execute(params: { account: PaymasterAccount; calls: Call[] }): Promise<string>;\n}\n\n/**\n * Parameters for signing SNIP-12 typed data without executing a transaction.\n * Useful for x402 payment signatures and other off-chain signing flows.\n */\nexport interface SignTypedDataParams {\n  /** Encryption key (PIN) to decrypt the private key */\n  encryptKey: string;\n  /** Wallet data containing encrypted private key */\n  wallet: WalletData;\n  /** SNIP-12 typed data to sign */\n  typedData: TypedData;\n}\n\n/**\n * Result of signing SNIP-12 typed data.\n */\nexport interface SignTypedDataResult {\n  /** Signature r component */\n  r: string;\n  /** Signature s component */\n  s: string;\n}\n\n/**\n * Parameters for syncing on-chain transactions from Voyager.\n */\nexport interface SyncOnChainTransfersParams {\n  /** Wallet address to sync transfers for */\n  walletAddress: string;\n}\n\n/**\n * Response from sync-on-chain endpoint.\n */\nexport interface SyncOnChainTransfersResponse {\n  /** Number of new transactions synced to DB */\n  synced: number;\n  /** Total transfers found on-chain */\n  total: number;\n}\n"]}