UNPKG

@privy-io/server-auth

Version:

Server-side client for the Privy API

2 lines (1 loc) 4.19 kB
import{PrivyApiError as a}from"../../errors.mjs";import{getRpcPathForRequest as t,extractIdempotencyKeyHeader as i,createAuthorizationSignatureHeader as e}from"../utils.mjs";import"@hpke/chacha20poly1305";import"@hpke/core";import"@noble/curves/p256";import"@noble/hashes/sha256";import"canonicalize";import"../../constants.mjs";import"../../paths.mjs";class r{async signMessage(a){let r=await t(a,this.api),n={};n=a.message instanceof Uint8Array?{message:Buffer.from(a.message).toString("hex"),encoding:"hex"}:{message:a.message,encoding:"utf-8"};let o={method:"personal_sign",params:n},s=i(a),p=e({method:"POST",url:this.api.baseURL+r,body:o,appId:this.appId,idempotencyKeyHeader:s,authorizationPrivateKey:this.authorizationPrivateKey}),{data:d}=await this.api.post(r,o,{headers:{...p,...s}});return{signature:d.data.signature,encoding:d.data.encoding}}async secp256k1Sign(a){let r=await t(a,this.api),n={method:"secp256k1_sign",params:{hash:a.hash}},o=i(a),s=e({method:"POST",url:this.api.baseURL+r,body:n,appId:this.appId,idempotencyKeyHeader:o,authorizationPrivateKey:this.authorizationPrivateKey}),{data:p}=await this.api.post(r,n,{headers:{...s,...o}});return{signature:p.data.signature,encoding:p.data.encoding}}async signTypedData(a){let r=await t(a,this.api),n={method:"eth_signTypedData_v4",params:{typed_data:{primary_type:a.typedData.primaryType,domain:a.typedData.domain,types:a.typedData.types,message:a.typedData.message}}},o=i(a),s=e({method:"POST",url:this.api.baseURL+r,body:n,appId:this.appId,idempotencyKeyHeader:o,authorizationPrivateKey:this.authorizationPrivateKey}),{data:p}=await this.api.post(r,n,{headers:{...s,...o}});return{signature:p.data.signature,encoding:p.data.encoding}}async signTransaction(a){let r=await t(a,this.api),n={method:"eth_signTransaction",params:{transaction:{from:a.transaction.from,to:a.transaction.to,nonce:a.transaction.nonce,chain_id:a.transaction.chainId,data:a.transaction.data,value:a.transaction.value,type:a.transaction.type,gas_limit:a.transaction.gasLimit,gas_price:a.transaction.gasPrice,max_fee_per_gas:a.transaction.maxFeePerGas,max_priority_fee_per_gas:a.transaction.maxPriorityFeePerGas}}},o=i(a),s=e({method:"POST",url:this.api.baseURL+r,body:n,appId:this.appId,idempotencyKeyHeader:o,authorizationPrivateKey:this.authorizationPrivateKey}),{data:p}=await this.api.post(r,n,{headers:{...s,...o}});return{signedTransaction:p.data.signed_transaction,encoding:p.data.encoding}}async sendTransaction(r){let n=await t(r,this.api),o={method:"eth_sendTransaction",caip2:r.caip2,params:{transaction:{from:r.transaction.from,to:r.transaction.to,nonce:r.transaction.nonce,chain_id:r.transaction.chainId,data:r.transaction.data,value:r.transaction.value,type:r.transaction.type,gas_limit:r.transaction.gasLimit,gas_price:r.transaction.gasPrice,max_fee_per_gas:r.transaction.maxFeePerGas,max_priority_fee_per_gas:r.transaction.maxPriorityFeePerGas}},sponsor:r.sponsor},s=i(r),p=e({method:"POST",url:this.api.baseURL+n,body:o,appId:this.appId,idempotencyKeyHeader:s,authorizationPrivateKey:this.authorizationPrivateKey}),{data:d}=await this.api.post(n,o,{headers:{...p,...s}});if(d.data)return{hash:d.data.hash,caip2:d.data.caip2};if(d.error)throw new a(d.error.code,null,d.error.message);throw Error("Unexpected API response to eth_sendTransaction")}async sign7702Authorization(r){let n=await t(r,this.api),o={method:"eth_sign7702Authorization",params:{contract:r.contract,chain_id:r.chainId,nonce:r.nonce}},s=i(r),p=e({method:"POST",url:this.api.baseURL+n,body:o,appId:this.appId,idempotencyKeyHeader:s,authorizationPrivateKey:this.authorizationPrivateKey}),{data:d}=await this.api.post(n,o,{headers:{...p,...s}});if(d.data)return{chainId:d.data.authorization.chain_id,contract:d.data.authorization.contract,nonce:d.data.authorization.nonce,yParity:d.data.authorization.y_parity,r:d.data.authorization.r,s:d.data.authorization.s};if(d.error)throw new a(d.error.code,null,d.error.message);throw Error("Unexpected API response to eth_sign7702Authorization")}constructor({appId:a,api:t,authorizationPrivateKey:i}){this.authorizationPrivateKey=null,this.api=t,this.appId=a,i&&(this.authorizationPrivateKey=i)}}export{r as EthereumRpcApi};