{"version":3,"sources":["../../src/utils/createDeterministicLinkedSignerPrivateKey.ts"],"sourcesContent":["import { keccak256 } from 'viem';\nimport { Subaccount, WalletClientWithAccount } from '../common';\nimport { getNadoEIP712Domain } from '../eip712';\nimport { subaccountToHex } from './bytes32';\n\ninterface Params extends Subaccount {\n  walletClient: WalletClientWithAccount;\n  chainId: number;\n  endpointAddress: string;\n}\n\n/**\n * Deterministically creates a new private key from a predetermined EIP712 message. This is used to\n * reliably create an authorized signer delegate for the subaccount across different clients. Used on the FE in order\n * to have a consistent private key for the subaccount linked signer across different clients.\n *\n * @param params\n */\nexport async function createDeterministicLinkedSignerPrivateKey(\n  params: Params,\n) {\n  const {\n    chainId,\n    endpointAddress,\n    walletClient,\n    subaccountName,\n    subaccountOwner,\n  } = params;\n\n  const signedMessage = await walletClient.signTypedData({\n    domain: getNadoEIP712Domain(endpointAddress, chainId),\n    types: {\n      CreateLinkedSignerWallet: [{ name: 'subaccount', type: 'bytes32' }],\n    },\n    primaryType: 'CreateLinkedSignerWallet',\n    message: {\n      subaccount: subaccountToHex({\n        subaccountOwner,\n        subaccountName,\n      }),\n    },\n  });\n\n  return keccak256(signedMessage);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA0B;AAE1B,oBAAoC;AACpC,qBAAgC;AAehC,eAAsB,0CACpB,QACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,MAAM,aAAa,cAAc;AAAA,IACrD,YAAQ,mCAAoB,iBAAiB,OAAO;AAAA,IACpD,OAAO;AAAA,MACL,0BAA0B,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IACpE;AAAA,IACA,aAAa;AAAA,IACb,SAAS;AAAA,MACP,gBAAY,gCAAgB;AAAA,QAC1B;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,aAAO,uBAAU,aAAa;AAChC;","names":[]}