{"version":3,"file":"advancedBarrel.mjs","names":[],"sources":["../src/sat-connect-core/types.advanced.ts","../src/sat-connect-core/walletMethods.advanced.ts","../src/sat-connect-core/btcMethods.advanced.ts","../src/sat-connect-core/provider.advanced.ts","../src/advancedBarrel.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n// From https://github.com/secretkeylabs/sats-connect-core/\n\nimport * as v from \"valibot\";\nimport type { BtcProvider } from \"./provider.advanced.js\";\nimport type { Requests, Return } from \"./requests.advanced.js\";\n\nexport enum BitcoinNetworkType {\n  Mainnet = \"Mainnet\",\n  Testnet = \"Testnet\",\n  Signet = \"Signet\",\n}\n\nexport interface BitcoinNetwork {\n  type: BitcoinNetworkType;\n  address?: string;\n}\n\nexport interface RequestPayload {\n  network: BitcoinNetwork;\n}\n\nexport interface RequestOptions<Payload extends RequestPayload, Response> {\n  onFinish: (response: Response) => void;\n  onCancel: () => void;\n  payload: Payload;\n  getProvider?: () => Promise<BtcProvider | undefined>;\n}\n\n// RPC Request and Response types\n\nexport const RpcIdSchema = v.optional(\n  v.union([v.string(), v.number(), v.null()]),\n);\nexport type RpcId = v.InferOutput<typeof RpcIdSchema>;\nexport const rpcRequestMessageSchema = v.object({\n  jsonrpc: v.literal(\"2.0\"),\n  method: v.string(),\n  params: v.optional(\n    v.union([\n      v.array(v.unknown()),\n      v.looseObject({}),\n      // Note: This is to support current incorrect usage of RPC 2.0. Params need\n      // to be either an array or an object when provided. Changing this now would\n      // be a breaking change, so accepting null values for now. Tracking in\n      // https://linear.app/xverseapp/issue/ENG-4538.\n      v.null(),\n    ]),\n  ),\n  id: RpcIdSchema,\n});\nexport type RpcRequestMessage = v.InferOutput<typeof rpcRequestMessageSchema>;\n\nexport interface RpcBase {\n  jsonrpc: \"2.0\";\n  id: RpcId;\n}\nexport interface RpcRequest<T extends string, U> extends RpcBase {\n  method: T;\n  params: U;\n}\n\nexport interface MethodParamsAndResult<TParams, TResult> {\n  params: TParams;\n  result: TResult;\n}\n\n/**\n * @enum {number} RpcErrorCode\n * @description JSON-RPC error codes\n * @see https://www.jsonrpc.org/specification#error_object\n */\nexport enum RpcErrorCode {\n  /**\n   * Parse error Invalid JSON\n   **/\n  PARSE_ERROR = -32700,\n  /**\n   * The JSON sent is not a valid Request object.\n   **/\n  INVALID_REQUEST = -32600,\n  /**\n   * The method does not exist/is not available.\n   **/\n  METHOD_NOT_FOUND = -32601,\n  /**\n   * Invalid method parameter(s).\n   */\n  INVALID_PARAMS = -32602,\n  /**\n   * Internal JSON-RPC error.\n   * This is a generic error, used when the server encounters an error in performing the request.\n   **/\n  INTERNAL_ERROR = -32603,\n  /**\n   * user rejected/canceled the request\n   */\n  USER_REJECTION = -32000,\n  /**\n   * method is not supported for the address provided\n   */\n  METHOD_NOT_SUPPORTED = -32001,\n  /**\n   * The client does not have permission to access the requested resource.\n   */\n  ACCESS_DENIED = -32002,\n}\n\nexport const rpcSuccessResponseMessageSchema = v.object({\n  jsonrpc: v.literal(\"2.0\"),\n  result: v.nonOptional(v.unknown()),\n  id: RpcIdSchema,\n});\nexport type RpcSuccessResponseMessage = v.InferOutput<\n  typeof rpcSuccessResponseMessageSchema\n>;\n\nexport const rpcErrorResponseMessageSchema = v.object({\n  jsonrpc: v.literal(\"2.0\"),\n  error: v.nonOptional(v.unknown()),\n  id: RpcIdSchema,\n});\nexport type RpcErrorResponseMessage = v.InferOutput<\n  typeof rpcErrorResponseMessageSchema\n>;\nexport const rpcResponseMessageSchema = v.union([\n  rpcSuccessResponseMessageSchema,\n  rpcErrorResponseMessageSchema,\n]);\nexport type RpcResponseMessage = v.InferOutput<typeof rpcResponseMessageSchema>;\n\nexport interface RpcError {\n  code: number | RpcErrorCode;\n  message: string;\n  data?: any;\n}\n\nexport interface RpcErrorResponse<\n  TError extends RpcError = RpcError,\n> extends RpcBase {\n  error: TError;\n}\n\nexport interface RpcSuccessResponse<\n  Method extends keyof Requests,\n> extends RpcBase {\n  result: Return<Method>;\n}\n\nexport type RpcResponse<Method extends keyof Requests> =\n  RpcSuccessResponse<Method> | RpcErrorResponse;\n\nexport type RpcResult<Method extends keyof Requests> =\n  | {\n      result: RpcSuccessResponse<Method>[\"result\"];\n      status: \"success\";\n    }\n  | {\n      error: RpcErrorResponse[\"error\"];\n      status: \"error\";\n    };\n","// From https://github.com/secretkeylabs/sats-connect-core/\n\nimport * as v from \"valibot\";\nimport {\n  MethodParamsAndResult,\n  rpcRequestMessageSchema,\n} from \"./types.advanced.js\";\n\nexport const walletTypes = [\"software\", \"ledger\"] as const;\nexport const walletTypeSchema = v.picklist(walletTypes);\nexport type WalletType = v.InferOutput<typeof walletTypeSchema>;\n\nexport const requestPermissionsMethodName = \"wallet_requestPermissions\";\nexport const requestPermissionsParamsSchema = v.undefined();\nexport const requestPermissionsResultSchema = v.literal(true);\nexport const requestPermissionsRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(requestPermissionsMethodName),\n    params: requestPermissionsParamsSchema,\n    id: v.string(),\n  }).entries,\n});\nexport type RequestPermissions = MethodParamsAndResult<\n  v.InferOutput<typeof requestPermissionsParamsSchema>,\n  v.InferOutput<typeof requestPermissionsResultSchema>\n>;\n\nexport const renouncePermissionsMethodName = \"wallet_renouncePermissions\";\nexport const renouncePermissionsParamsSchema = v.undefined();\nexport const renouncePermissionsResultSchema = v.literal(true);\nexport const renouncePermissionsRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(renouncePermissionsMethodName),\n    params: renouncePermissionsParamsSchema,\n    id: v.string(),\n  }).entries,\n});\nexport type RenouncePermissions = MethodParamsAndResult<\n  v.InferOutput<typeof renouncePermissionsParamsSchema>,\n  v.InferOutput<typeof renouncePermissionsResultSchema>\n>;\n\nexport const getWalletTypeMethodName = \"wallet_getWalletType\";\nexport const getWalletTypeParamsSchema = v.nullish(v.null());\nexport const getWalletTypeResultSchema = walletTypeSchema;\nexport const getWalletTypeRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(getWalletTypeMethodName),\n    id: v.string(),\n  }).entries,\n});\nexport type GetWalletType = MethodParamsAndResult<\n  v.InferOutput<typeof getWalletTypeParamsSchema>,\n  v.InferOutput<typeof getWalletTypeResultSchema>\n>;\n\nexport type WalletNetworkName = \"Mainnet\" | \"Testnet4\" | \"Signet\" | \"Regtest\";\n\nexport type GetNetwork = MethodParamsAndResult<\n  null,\n  {\n    bitcoin: { name: WalletNetworkName };\n    stacks?: { name: string };\n    spark?: { name: string };\n  }\n>;\n\nexport type ChangeNetwork = MethodParamsAndResult<\n  { name: WalletNetworkName },\n  null\n>;\n","// From https://github.com/secretkeylabs/sats-connect-core/\n\n/**\n * Represents the types and interfaces related to BTC methods.\n */\n\nimport * as v from \"valibot\";\nimport {\n  MethodParamsAndResult,\n  rpcRequestMessageSchema,\n} from \"./types.advanced.js\";\nimport { walletTypeSchema } from \"./walletMethods.advanced.js\";\n\nexport enum AddressPurpose {\n  Ordinals = \"ordinals\",\n  Payment = \"payment\",\n  Stacks = \"stacks\",\n}\n\nexport enum AddressType {\n  p2pkh = \"p2pkh\",\n  p2sh = \"p2sh\",\n  p2wpkh = \"p2wpkh\",\n  p2wsh = \"p2wsh\",\n  p2tr = \"p2tr\",\n  stacks = \"stacks\",\n}\n\nexport const addressSchema = v.object({\n  address: v.string(),\n  publicKey: v.string(),\n  purpose: v.enum(AddressPurpose),\n  addressType: v.enum(AddressType),\n});\nexport type Address = v.InferOutput<typeof addressSchema>;\n\nexport const getInfoMethodName = \"getInfo\";\nexport const getInfoParamsSchema = v.nullish(v.null());\nexport type GetInfoParams = v.InferOutput<typeof getInfoParamsSchema>;\nexport const getInfoResultSchema = v.object({\n  /**\n   * Version of the wallet.\n   */\n  version: v.string(),\n\n  /**\n   * [WBIP](https://wbips.netlify.app/wbips/WBIP002) methods supported by the wallet.\n   */\n  methods: v.optional(v.array(v.string())),\n\n  /**\n   * List of WBIP standards supported by the wallet. Not currently used.\n   */\n  supports: v.array(v.string()),\n});\nexport type GetInfoResult = v.InferOutput<typeof getInfoResultSchema>;\nexport const getInfoRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(getInfoMethodName),\n    params: getInfoParamsSchema,\n    id: v.string(),\n  }).entries,\n});\nexport type GetInfoRequestMessage = v.InferOutput<\n  typeof getInfoRequestMessageSchema\n>;\nexport type GetInfo = MethodParamsAndResult<\n  v.InferOutput<typeof getInfoParamsSchema>,\n  v.InferOutput<typeof getInfoResultSchema>\n>;\n\nexport const getAddressesMethodName = \"getAddresses\";\nexport const getAddressesParamsSchema = v.object({\n  /**\n   * The purposes for which to generate addresses. See\n   * {@linkcode AddressPurpose} for available purposes.\n   */\n  purposes: v.array(v.enum(AddressPurpose)),\n  /**\n   * A message to be displayed to the user in the request prompt.\n   */\n  message: v.optional(v.string()),\n});\nexport type GetAddressesParams = v.InferOutput<typeof getAddressesParamsSchema>;\nexport const getAddressesResultSchema = v.object({\n  /**\n   * The addresses generated for the given purposes.\n   */\n  addresses: v.array(addressSchema),\n});\nexport type GetAddressesResult = v.InferOutput<typeof getAddressesResultSchema>;\nexport const getAddressesRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(getAddressesMethodName),\n    params: getAddressesParamsSchema,\n    id: v.string(),\n  }).entries,\n});\nexport type GetAddressesRequestMessage = v.InferOutput<\n  typeof getAddressesRequestMessageSchema\n>;\nexport type GetAddresses = MethodParamsAndResult<\n  v.InferOutput<typeof getAddressesParamsSchema>,\n  v.InferOutput<typeof getAddressesResultSchema>\n>;\n\nexport const signMessageMethodName = \"signMessage\";\n\nexport enum MessageSigningProtocols {\n  ECDSA = \"ECDSA\",\n  BIP322 = \"BIP322\",\n}\n\nexport const signMessageParamsSchema = v.object({\n  /**\n   * The address used for signing.\n   **/\n  address: v.string(),\n  /**\n   * The message to sign.\n   **/\n  message: v.string(),\n  /**\n   * The protocol to use for signing the message.\n   */\n  protocol: v.optional(v.enum(MessageSigningProtocols)),\n});\nexport type SignMessageParams = v.InferOutput<typeof signMessageParamsSchema>;\nexport const signMessageResultSchema = v.object({\n  /**\n   * The signature of the message.\n   */\n  signature: v.string(),\n  /**\n   * hash of the message.\n   */\n  messageHash: v.string(),\n  /**\n   * The address used for signing.\n   */\n  address: v.string(),\n  /**\n   * The protocol to use for signing the message.\n   */\n  protocol: v.enum(MessageSigningProtocols),\n});\nexport type SignMessageResult = v.InferOutput<typeof signMessageResultSchema>;\nexport const signMessageRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(signMessageMethodName),\n    params: signMessageParamsSchema,\n    id: v.string(),\n  }).entries,\n});\nexport type SignMessageRequestMessage = v.InferOutput<\n  typeof signMessageRequestMessageSchema\n>;\nexport type SignMessage = MethodParamsAndResult<\n  v.InferOutput<typeof signMessageParamsSchema>,\n  v.InferOutput<typeof signMessageResultSchema>\n>;\n\ntype Recipient = {\n  /**\n   * The recipient's address.\n   **/\n  address: string;\n  /**\n   * The amount to send to the recipient in satoshis.\n   */\n  amount: number;\n};\n\nexport type SendTransferParams = {\n  /**\n   * Array of recipients to send to.\n   * The amount to send to each recipient is in satoshis.\n   */\n  recipients: Array<Recipient>;\n};\ntype SendTransferResult = {\n  /**\n   * The transaction id as a hex-encoded string.\n   */\n  txid: string;\n};\n\nexport type SendTransfer = MethodParamsAndResult<\n  SendTransferParams,\n  SendTransferResult\n>;\n\nexport type SignPsbtParams = {\n  /**\n   * The base64 encoded PSBT to sign.\n   */\n  psbt: string;\n  /**\n   * The inputs to sign.\n   * The key is the address and the value is an array of indexes of the inputs to sign.\n   */\n  signInputs: Record<string, number[]>;\n  /**\n   * the sigHash type to use for signing.\n   * will default to the sighash type of the input if not provided.\n   **/\n  allowedSignHash?: number;\n  /**\n   * Whether to broadcast the transaction after signing.\n   **/\n  broadcast?: boolean;\n};\n\nexport type SignPsbtResult = {\n  /**\n   * The base64 encoded PSBT after signing.\n   */\n  psbt: string;\n  /**\n   * The transaction id as a hex-encoded string.\n   * This is only returned if the transaction was broadcast.\n   **/\n  txid?: string;\n};\n\nexport type SignPsbt = MethodParamsAndResult<SignPsbtParams, SignPsbtResult>;\n\nexport const getAccountsMethodName = \"getAccounts\";\nexport const getAccountsParamsSchema = v.object({\n  /**\n   * The purposes for which to generate addresses. See\n   * {@linkcode AddressPurpose} for available purposes.\n   */\n  purposes: v.array(v.enum(AddressPurpose)),\n  /**\n   * A message to be displayed to the user in the request prompt.\n   */\n  message: v.optional(v.string()),\n});\nexport type GetAccountsParams = v.InferOutput<typeof getAccountsParamsSchema>;\n\nexport const getAccountsResultSchema = v.array(\n  v.object({\n    ...addressSchema.entries,\n    ...v.object({\n      walletType: walletTypeSchema,\n    }).entries,\n  }),\n);\nexport type GetAccountsResult = v.InferOutput<typeof getAccountsResultSchema>;\nexport const getAccountsRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(getAccountsMethodName),\n    params: getAccountsParamsSchema,\n    id: v.string(),\n  }).entries,\n});\nexport type GetAccountsRequestMessage = v.InferOutput<\n  typeof getAccountsRequestMessageSchema\n>;\nexport type GetAccounts = MethodParamsAndResult<\n  v.InferOutput<typeof getAccountsParamsSchema>,\n  v.InferOutput<typeof getAccountsResultSchema>\n>;\n\nexport const getBalanceMethodName = \"getBalance\";\nexport const getBalanceParamsSchema = v.nullish(v.null());\nexport const getBalanceResultSchema = v.object({\n  /**\n   * The confirmed balance of the wallet in sats. Using a string due to chrome\n   * messages not supporting bigint\n   * (https://issues.chromium.org/issues/40116184).\n   */\n  confirmed: v.string(),\n\n  /**\n   * The unconfirmed balance of the wallet in sats. Using a string due to chrome\n   * messages not supporting bigint\n   * (https://issues.chromium.org/issues/40116184).\n   */\n  unconfirmed: v.string(),\n\n  /**\n   * The total balance (both confirmed and unconfrimed UTXOs) of the wallet in\n   * sats. Using a string due to chrome messages not supporting bigint\n   * (https://issues.chromium.org/issues/40116184).\n   */\n  total: v.string(),\n});\nexport const getBalanceRequestMessageSchema = v.object({\n  ...rpcRequestMessageSchema.entries,\n  ...v.object({\n    method: v.literal(getBalanceMethodName),\n    id: v.string(),\n  }).entries,\n});\nexport type GetBalance = MethodParamsAndResult<\n  v.InferOutput<typeof getBalanceParamsSchema>,\n  v.InferOutput<typeof getBalanceResultSchema>\n>;\n","import * as v from \"valibot\";\nimport { Params, Requests } from \"./requests.advanced.js\";\nimport { RpcResponse } from \"./types.advanced.js\";\n\n// accountChange\nexport const accountChangeEventName = \"accountChange\";\nexport const accountChangeSchema = v.object({\n  type: v.literal(accountChangeEventName),\n});\nexport type AccountChangeEvent = v.InferOutput<typeof accountChangeSchema>;\n\n// networkChange\nexport const networkChangeEventName = \"networkChange\";\nexport const networkChangeSchema = v.object({\n  type: v.literal(networkChangeEventName),\n});\nexport type NetworkChangeEvent = v.InferOutput<typeof networkChangeSchema>;\n\n// disconnect\nexport const disconnectEventName = \"disconnect\";\nexport const disconnectSchema = v.object({\n  type: v.literal(disconnectEventName),\n});\nexport type DisconnectEvent = v.InferOutput<typeof disconnectSchema>;\n\nexport const walletEventSchema = v.variant(\"type\", [\n  accountChangeSchema,\n  networkChangeSchema,\n  disconnectSchema,\n]);\n\nexport type WalletEvent = v.InferOutput<typeof walletEventSchema>;\nexport type AddListener = <const WalletEventName extends WalletEvent[\"type\"]>(\n  eventName: WalletEventName,\n  cb: (event: Extract<WalletEvent, { type: WalletEventName }>) => void,\n) => () => void;\n\n/**\n * Interface representing a provider for interacting with accounts and signing messages.\n */\nexport interface BtcProvider {\n  request: <Method extends keyof Requests>(\n    method: Method,\n    options: Params<Method>,\n    providerId?: string,\n  ) => Promise<RpcResponse<Method>>;\n\n  addListener: AddListener;\n}\n\nexport interface Provider {\n  id: string;\n  name: string;\n  icon: string;\n  webUrl?: string;\n  chromeWebStoreUrl?: string;\n  mozillaAddOnsUrl?: string;\n  googlePlayStoreUrl?: string;\n  iOSAppStoreUrl?: string;\n  methods?: string[];\n}\n","export * from \"./sat-connect-core/advanced.js\";\n"],"mappings":"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"}