@keyban/sdk-base
Version:
Keyban Javascript SDK provides core functionalities for the MPC wallet solution, supporting web and Node.js apps with TypeScript, custom storage, and Ethereum blockchain integration.
2 lines • 4.53 kB
JavaScript
import {c,a as a$1}from'./chunk-UGMWAWZZ.mjs';import'./chunk-3UK7MQXP.mjs';import'./chunk-VGFAFYVC.mjs';import {RpcProvider,Account,encode,typedData,transaction,hash,stark,CallData,uint256,num}from'starknet';import {secp256k1}from'@noble/curves/secp256k1';var a={V0:"0x0",V1:"0x1",V2:"0x2",V3:"0x3",F0:"0x100000000000000000000000000000000",F1:"0x100000000000000000000000000000001",F2:"0x100000000000000000000000000000002",F3:"0x100000000000000000000000000000003"},E={V0:a.V0,V1:a.V1,V2:a.V2,F0:a.F0,F1:a.F1,F2:a.F2},p={V3:a.V3,F3:a.F3};var m=class extends a$1{#e;address;publicKey;constructor(e,t,n){super(e),this.#e=t,this.address=t.address,this.publicKey=n;}async signMessage(e){let t={types:{StarknetDomain:[{name:"name",type:"shortstring"},{name:"version",type:"shortstring"},{name:"chainId",type:"shortstring"},{name:"revision",type:"shortstring"}],Message:[{name:"message",type:"string"}]},primaryType:"Message",domain:{name:"StarkNet Message",version:"1",chainId:"1",revision:"1"},message:{message:e}};return await this.#e.signMessage(t)}async transfer(e,t,n){throw new Error("Unimplemented")}async estimateTransfer(e){throw new Error("Unimplemented")}async transferERC20(e){throw new Error("Unimplemented")}async estimateERC20Transfer(e){throw new Error("Unimplemented")}async transferNft(e){throw new Error("Unimplemented")}async estimateNftTransfer(e){throw new Error("Unimplemented")}async signTransaction(e){throw new Error("Unimplemented")}};var T=class{#e;#n;#s;constructor(e,t,n){this.#e=e,this.#n=t,this.#s=n;}async getPubKey(){return this.#s}async#t(e){return this.#e.call("ecdsa","sign",this.#n,encode.removeHexPrefix(encode.sanitizeHex(e))).then(f)}async signMessage(e,t){let n=typedData.getMessageHash(e,t);return this.#t(n)}async signTransaction(e,t){let n=transaction.getExecuteCalldata(e,t.cairoVersion),s;if(Object.values(E).includes(t.version)){let r=t;s=hash.calculateInvokeTransactionHash({...r,senderAddress:r.walletAddress,compiledCalldata:n,version:r.version});}else if(Object.values(p).includes(t.version)){let r=t;s=hash.calculateInvokeTransactionHash({...r,senderAddress:r.walletAddress,compiledCalldata:n,version:r.version,nonceDataAvailabilityMode:stark.intDAM(r.nonceDataAvailabilityMode),feeDataAvailabilityMode:stark.intDAM(r.feeDataAvailabilityMode)});}else throw Error("unsupported signTransaction version");return this.#t(s)}async signDeployAccountTransaction(e){let t=CallData.compile(e.constructorCalldata),n;if(Object.values(E).includes(e.version)){let s=e;n=hash.calculateDeployAccountTransactionHash({...s,salt:s.addressSalt,constructorCalldata:t,version:s.version});}else if(Object.values(p).includes(e.version)){let s=e;n=hash.calculateDeployAccountTransactionHash({...s,salt:s.addressSalt,compiledConstructorCalldata:t,version:s.version,nonceDataAvailabilityMode:stark.intDAM(s.nonceDataAvailabilityMode),feeDataAvailabilityMode:stark.intDAM(s.feeDataAvailabilityMode)});}else throw Error("unsupported signDeployAccountTransaction version");return this.#t(n)}async signDeclareTransaction(e){let t;if(Object.values(E).includes(e.version)){let n=e;t=hash.calculateDeclareTransactionHash({...n,version:n.version});}else if(Object.values(p).includes(e.version)){let n=e;t=hash.calculateDeclareTransactionHash({...n,version:n.version,nonceDataAvailabilityMode:stark.intDAM(n.nonceDataAvailabilityMode),feeDataAvailabilityMode:stark.intDAM(n.feeDataAvailabilityMode)});}else throw Error("unsupported signDeclareTransaction version");return this.#t(t)}};function f(c){let{r:e,s:t}=secp256k1.Signature.fromCompact(c.slice(2,130)),n=+`0x${c.slice(130)}`;if(n!==0&&n!==1)throw new Error("Invalid yParity value");let s=uint256.bnToUint256(e),r=uint256.bnToUint256(t);if(n===void 0)throw Error("yParity is required");return [num.toHex(s.low),num.toHex(s.high),num.toHex(r.low),num.toHex(r.high),num.toHex(n)]}var D=class extends c{#e;constructor(e,t){super(e,t),this.#e=this.metadataConfig.then(n=>new RpcProvider({nodeUrl:n.network.rpcUrl}));}async initialize(){let e=`ecdsa:${this.network}`,t=await this.clientShareProvider.get(e);t||(t=await this.rpcClient.call("ecdsa","dkg"),await this.clientShareProvider.set(e,t));let[n,s,r]=await Promise.all([this.#e,this.rpcClient.call("ecdsa","publicKey",t).then(y=>`0x${y.slice(4)}`),this.rpcClient.call("account","getAddress")]),C=new T(this.rpcClient,t,s),_=new Account(n,r,C,void 0,a.V3);return new m(this.rpcClient,_,s)}};export{D as StarknetClient};//# sourceMappingURL=starknet-L7RGFFGF.mjs.map
//# sourceMappingURL=starknet-L7RGFFGF.mjs.map