UNPKG

@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.46 kB
import {c,a as a$1}from'./chunk-WPOOJWVI.mjs';import'./chunk-DWBGILVH.mjs';import'./chunk-7K44U4PL.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 T=class extends a$1{#e;address;publicKey;constructor(e,n,t){super(e),this.#e=n,this.address=n.address,this.publicKey=t;}async signMessage(e){let n={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(n)}async transfer(e,n,t){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")}};var m=class{#e;#n;#s;constructor(e,n,t){this.#e=e,this.#n=n,this.#s=t;}async getPubKey(){return this.#s}async#t(e){return this.#e.call("ecdsa","sign",this.#n,encode.removeHexPrefix(encode.sanitizeHex(e))).then(S)}async signMessage(e,n){let t=typedData.getMessageHash(e,n);return this.#t(t)}async signTransaction(e,n){let t=transaction.getExecuteCalldata(e,n.cairoVersion),s;if(Object.values(E).includes(n.version)){let r=n;s=hash.calculateInvokeTransactionHash({...r,senderAddress:r.walletAddress,compiledCalldata:t,version:r.version});}else if(Object.values(p).includes(n.version)){let r=n;s=hash.calculateInvokeTransactionHash({...r,senderAddress:r.walletAddress,compiledCalldata:t,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 n=CallData.compile(e.constructorCalldata),t;if(Object.values(E).includes(e.version)){let s=e;t=hash.calculateDeployAccountTransactionHash({...s,salt:s.addressSalt,constructorCalldata:n,version:s.version});}else if(Object.values(p).includes(e.version)){let s=e;t=hash.calculateDeployAccountTransactionHash({...s,salt:s.addressSalt,compiledConstructorCalldata:n,version:s.version,nonceDataAvailabilityMode:stark.intDAM(s.nonceDataAvailabilityMode),feeDataAvailabilityMode:stark.intDAM(s.feeDataAvailabilityMode)});}else throw Error("unsupported signDeployAccountTransaction version");return this.#t(t)}async signDeclareTransaction(e){let n;if(Object.values(E).includes(e.version)){let t=e;n=hash.calculateDeclareTransactionHash({...t,version:t.version});}else if(Object.values(p).includes(e.version)){let t=e;n=hash.calculateDeclareTransactionHash({...t,version:t.version,nonceDataAvailabilityMode:stark.intDAM(t.nonceDataAvailabilityMode),feeDataAvailabilityMode:stark.intDAM(t.feeDataAvailabilityMode)});}else throw Error("unsupported signDeclareTransaction version");return this.#t(n)}};function S(c){let{r:e,s:n}=secp256k1.Signature.fromCompact(c.slice(2,130)),t=+`0x${c.slice(130)}`;if(t!==0&&t!==1)throw new Error("Invalid yParity value");let s=uint256.bnToUint256(e),r=uint256.bnToUint256(n);if(t===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(t)]}var D=class extends c{#e;constructor(e,n){super(e,n),this.#e=this.metadataConfig.then(t=>new RpcProvider({nodeUrl:t.network.rpcUrl}));}async initialize(){let e=await this.clientShareProvider.get("ecdsa");e||(e=await this.rpcClient.call("ecdsa","dkg"),await this.clientShareProvider.set("ecdsa",e));let[n,t,s]=await Promise.all([this.#e,this.rpcClient.call("ecdsa","publicKey",e).then(_=>`0x${_.slice(4)}`),this.rpcClient.call("account","getAddress")]),r=new m(this.rpcClient,e,t),C=new Account(n,s,r,void 0,a.V3);return new T(this.rpcClient,C,t)}};export{D as StarknetClient};//# sourceMappingURL=starknet-Q5CMNFHK.mjs.map //# sourceMappingURL=starknet-Q5CMNFHK.mjs.map