{"version":3,"sources":["../../src/account/personal-server-lite-owner-binding.ts"],"sourcesContent":["/**\n * Optional first-party Account integration for PS Lite owner binding.\n *\n * The protocol helper lives in `protocol/personal-server-lite-owner-binding`.\n * This module adapts any Account-style client exposing `getAddress` and\n * `signMessage` to the SDK owner-binding signature shape.\n *\n * @category Account\n */\n\nimport type { Address, Hex } from \"viem\";\nimport {\n  buildPersonalServerLiteOwnerBindingMessage,\n  PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE,\n  type PersonalServerLiteOwnerBindingSignature,\n} from \"../protocol/personal-server-lite-owner-binding\";\n\nexport interface AccountPersonalServerLiteOwnerBindingClient {\n  getAddress(): Promise<Address | null> | Address | null;\n  signMessage(input: {\n    message: ReturnType<typeof buildPersonalServerLiteOwnerBindingMessage>;\n  }): Promise<Hex> | Hex;\n}\n\nexport interface SignPersonalServerLiteOwnerBindingWithAccountClientConfig {\n  client: AccountPersonalServerLiteOwnerBindingClient;\n}\n\nexport class AccountPersonalServerLiteOwnerBindingError extends Error {\n  code?: number | string;\n  details?: unknown;\n\n  constructor(input: {\n    message: string;\n    code?: number | string;\n    details?: unknown;\n  }) {\n    super(input.message);\n    this.name = \"AccountPersonalServerLiteOwnerBindingError\";\n    this.code = input.code;\n    this.details = input.details;\n  }\n}\n\nexport async function signPersonalServerLiteOwnerBindingWithAccountClient(\n  config: SignPersonalServerLiteOwnerBindingWithAccountClientConfig,\n): Promise<PersonalServerLiteOwnerBindingSignature> {\n  let address: Address | null;\n  try {\n    address = await config.client.getAddress();\n  } catch (error) {\n    throw accountOwnerBindingError(error);\n  }\n\n  if (!address) {\n    throw new AccountPersonalServerLiteOwnerBindingError({\n      message: \"Account did not return a wallet address\",\n      code: \"account_address_required\",\n    });\n  }\n\n  const message = buildPersonalServerLiteOwnerBindingMessage(address);\n  let signature: Hex;\n  try {\n    signature = await config.client.signMessage({ message });\n  } catch (error) {\n    throw accountOwnerBindingError(error);\n  }\n\n  return {\n    signature,\n    signerAddress: address,\n    message,\n    purpose: PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE,\n  };\n}\n\nfunction accountOwnerBindingError(\n  error: unknown,\n): AccountPersonalServerLiteOwnerBindingError {\n  if (error instanceof AccountPersonalServerLiteOwnerBindingError) {\n    return error;\n  }\n\n  const rpcError = error as\n    | { code?: number | string; message?: string }\n    | undefined;\n  const code = rpcError?.code;\n  const message =\n    typeof rpcError?.message === \"string\" && rpcError.message.length > 0\n      ? rpcError.message\n      : \"Account PS Lite owner-binding signature failed\";\n\n  return new AccountPersonalServerLiteOwnerBindingError({\n    message,\n    code,\n    details: error,\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,gDAIO;AAaA,MAAM,mDAAmD,MAAM;AAAA,EACpE;AAAA,EACA;AAAA,EAEA,YAAY,OAIT;AACD,UAAM,MAAM,OAAO;AACnB,SAAK,OAAO;AACZ,SAAK,OAAO,MAAM;AAClB,SAAK,UAAU,MAAM;AAAA,EACvB;AACF;AAEA,eAAsB,oDACpB,QACkD;AAClD,MAAI;AACJ,MAAI;AACF,cAAU,MAAM,OAAO,OAAO,WAAW;AAAA,EAC3C,SAAS,OAAO;AACd,UAAM,yBAAyB,KAAK;AAAA,EACtC;AAEA,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,2CAA2C;AAAA,MACnD,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,cAAU,sFAA2C,OAAO;AAClE,MAAI;AACJ,MAAI;AACF,gBAAY,MAAM,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;AAAA,EACzD,SAAS,OAAO;AACd,UAAM,yBAAyB,KAAK;AAAA,EACtC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEA,SAAS,yBACP,OAC4C;AAC5C,MAAI,iBAAiB,4CAA4C;AAC/D,WAAO;AAAA,EACT;AAEA,QAAM,WAAW;AAGjB,QAAM,OAAO,UAAU;AACvB,QAAM,UACJ,OAAO,UAAU,YAAY,YAAY,SAAS,QAAQ,SAAS,IAC/D,SAAS,UACT;AAEN,SAAO,IAAI,2CAA2C;AAAA,IACpD;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AACH;","names":[]}