{"dist":{"shasum":"8f8eed9eaec9e9b03d07f88e1771bba4a2aa946d","tarball":"https://registry.npmjs.org/@walletconnect/client/-/client-2.0.0-alpha.5.tgz","fileCount":57,"integrity":"sha512-cbZsErxKVGiEU2/npGPeiS2QQZnAhp21p+dbxR/83asP6F7uF/+1a4l91klWroXB0jkxvYAadT+4GnNLo5pKNw==","signatures":[{"sig":"MEUCIQCeG0HXwaVbTCqPmYLOJflM97S/fPpbs8K3hSeiyfrg1gIgHUdKEiv2qJSj3V3Lco9NEQAtm7fkm5eQJ/qVlGlnPtI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1123477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx+sPCRA9TVsSAnZWagAAkRMQAIA1Chg3G3wcr0Aguj0v\nKgtVSjYbpLv8r59g5rVzC2W2GHBwU/Dmnm6lgTskLFhQPUoA0YQEgSnBmQND\n3V145xX8KtsgFm9SJKlhCUZ//TXSTLR6AaOjtQcVF2Mluh+aPqaSY7Brh8cg\nPaYvTLFvD94V0nDhKN022oMnrTLR+3rgnhQ9O7UHFS9/MemxV7+6GFxC55/y\n8Sj/w6wWZo/JZ0eCSFqWUbygZ7YzTwzdRnK7xr9q8825Q9wEuJjhhU4jwJHt\n1Lnl+SOwyBDZxavWCGYlqQ9DTcvw2fqDLh3KzIsWk0A+GFaeyDExFKiZwuCz\nGkIx4/uJHrr7BpjGavn8gtHl/AqRfuMjHt9r/W0CC/OtMosC8To06ZHTZKOb\nC/sPuWHa6O9l/mS0VA42/x0rHc1TNhcS6BeM01n/QBicAfunqwbfHxI+jJxA\nRFSElUUdcCjf1uspamBbtUxN+oWfNB7yOu9QvuYZFxMkUGByAh7ibyIwXZbb\nvwMzCSpGfYjc/hImpKvF7Jm1J2wOVGjlF0pBds4KMYSPC2W0/RbZ2Z19pZNw\nh9ib5BrQ3WOGOIexzAeiF40TSHEtIbrAix1/Hhbw0q6PDUYXEvU1VHf0zQGi\n1/s1jNLIMyxpvf60OF44PQtLx2csrSBkrZ3z71N1ruV4U8vEeSRHT3PD6ZzM\nTUbk\r\n=7NC7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cjs/index.js","name":"@walletconnect/client","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/index.min.js","author":{"name":"WalletConnect Labs","email":"walletconnectlabs.com"},"readme":"# @walletconnect/client\n\nClient for WalletConnect Protocol\n\n## Description\n\nThis library provides a Standalone Client for WalletConnect 2.0 Protocol for both Dapps and Wallets. Integration will differ from the perspective of each client as the Proposer and Responder, respectively. It's compatible with NodeJS, Browser and React-Native applications (NodeJS modules required to be polyfilled for React-Native)\n\n## Install\n\n```bash\nyarn add @walletconnect/client\n# OR\n\nnpm install --save @walletconnect/client\n```\n\n## Connecting\n\nThis quick start example will describe how an integration should be followed for both Dapps and Wallets respectively\n\n### Dapps\n\n1. Initiate your WalletConnect client with the relay server\n\n```js\nimport WalletConnectClient from \"@walletconnect/client\";\n\nconst client = await WalletConnectClient.init({ relayProvider: \"ws://staging.walletconnect.org\" });\n```\n\n2. Subscribe to connection proposal event for sharing URI\n\n```js\nimport { CLIENT_EVENTS } from \"@walletconnect/client\";\nimport { ConnectionTypes } from \"@walletconnect/types\";\n\nclient.on(CLIENT_EVENTS.connection.proposal, async (proposal: ConnectionTypes.Proposal) => {\n  // uri should be shared with the Wallet either through QR Code scanning or mobile deep linking\n  const { uri } = proposal.signal.params;\n});\n```\n\n3. Connect application and specify session permissions\n\n```js\nconst session = await client.connect({\n  metadata: {\n    name: \"Example Dapp\",\n    description: \"Example Dapp\",\n    url: \"#\",\n    icons: [\"https://walletconnect.org/walletconnect-logo.png\"],\n  },\n  permissions: {\n    blockchain: {\n      chainIds: [\"eip155:1\"],\n    },\n    jsonrpc: {\n      methods: [\"eth_sendTransaction\", \"personal_sign\", \"eth_signTypedData\"],\n    },\n  },\n});\n```\n\n### Wallets\n\n1. Initiate your WalletConnect client with the relay server\n\n```js\nimport WalletConnectClient from \"@walletconnect/client\";\n\nconst client = await WalletConnectClient.init({ relayProvider: \"ws://staging.walletconnect.org\" });\n```\n\n2. Subscribe to session proposal event for user approval and session created when successful\n\n```js\nimport { CLIENT_EVENTS } from \"@walletconnect/client\";\nimport { SessionTypes } from \"@walletconnect/types\";\n\nclient.on(CLIENT_EVENTS.session.proposal, async (proposal: SessionTypes.Proposal) => {\n  // user should be prompted to approve the proposed session permissions displaying also dapp metadata\n  const { proposer, permissions } = proposal;\n  const { metadata } = proposer;\n  let approved: boolean;\n  handleSessionUserApproval(approved, proposal); // described in the next step\n});\n\nclient.on(CLIENT_EVENTS.session.created, async (session: SessionTypes.Created) => {\n  // session created succesfully\n});\n```\n\n3. Handle user approval for proposed session\n\n```js\nfunction handleSessionUserApproval(approved: boolean, proposal: SessionTypes.Proposal) {\n  if (userApproved) {\n    // if user approved then respond with accountIds matching the chainIds and wallet metadata\n    const response: SessionTypes.Response = {\n      metadata: {\n        name: \"Test Wallet\",\n        description: \"Test Wallet\",\n        url: \"#\",\n        icons: [\"https://walletconnect.org/walletconnect-logo.png\"],\n      },\n      state: {\n        accountIds: [\"0x1d85568eEAbad713fBB5293B45ea066e552A90De@eip155:1\"],\n      },\n    }\n    await client.respond({approved: true, proposal, response});\n  } else {\n    // if user didn't approve then respond with no response\n    await client.respond({ approved: false, proposal });\n  }\n}\n```\n\n## JSON-RPC Payloads\n\n### Dapps\n\nOnce the session has been succesfull then you can start making JSON-RPC requests to be approved and signed by the wallet\n\n```js\nconst result = await client.request({\n  topic: session.topic,\n  chainId: \"eip155:1\",\n  request: {\n    id: 1,\n    jsonrpc: \"2.0\",\n    method: \"personal_sign\",\n    params: [\n      \"0x1d85568eEAbad713fBB5293B45ea066e552A90De\",\n      \"0x7468697320697320612074657374206d65737361676520746f206265207369676e6564\",\n    ],\n  },\n});\n```\n\n### Wallets\n\nGiven that session has settled succesfully since user approved the session on the wallet side, then the Wallet should subscribe to session payload events on the client\n\n```js\nimport { CLIENT_EVENTS } from \"@walletconnect/client\";\nimport { SessionTypes } from \"@walletconnect/types\";\n\nclient.on(CLIENT_EVENTS.session.payload, async (payloadEvent: SessionTypes.PayloadEvent) => {\n  // WalletConnect client can track multiple sessions\n  // assert the topic from which application requested\n  const { topic, payload } = payloadEvent;\n  const session = await client.session.get(payloadEvent.topic);\n  // now you can display to the user for approval using the stored metadata\n  const { metadata } = session.peer;\n  // after user has either approved or not the request it should be formatted\n  // as response with either the result or the error message\n  let approved: boolean;\n  if (approved) {\n    await client.resolve({\n      topic: session.topic,\n      response: {\n        id: payload.id,\n        jsonrpc: \"2.0\",\n        result,\n      },\n    });\n  } else {\n    await client.resolve({\n      topic: session.topic,\n      response: {\n        id: payload.id,\n        jsonrpc: \"2.0\",\n        error: {\n          code: -32000,\n          message: \"User rejected JSON-RPC request\",\n        },\n      },\n    });\n  }\n});\n```\n\n## API\n\n```typescript\nexport interface ClientOptions {\n  logger?: string | Logger;\n  store?: IStore;\n  relayProvider?: string | IJsonRpcProvider;\n  overrideContext?: string;\n}\n\nexport abstract class IClient extends IEvents {\n  public readonly protocol = \"wc\";\n  public readonly version = 2;\n\n  public abstract logger: Logger;\n\n  public abstract store: IStore;\n  public abstract relay: IRelay;\n\n  public abstract connection: IConnection;\n  public abstract session: ISession;\n\n  constructor(opts?: ClientOptions) {\n    super();\n  }\n\n  public abstract connect(params: ClientTypes.ConnectParams): Promise<SessionTypes.Settled>;\n  public abstract respond(params: ClientTypes.RespondParams): Promise<string | undefined>;\n  public abstract update(params: ClientTypes.UpdateParams): Promise<SessionTypes.Settled>;\n  public abstract request(params: ClientTypes.RequestParams): Promise<any>;\n  public abstract resolve(params: ClientTypes.ResolveParams): Promise<void>;\n  public abstract disconnect(params: ClientTypes.DisconnectParams): Promise<void>;\n}\n\nexport declare namespace ClientTypes {\n  export interface ConnectParams {\n    metadata: SessionTypes.Metadata;\n    permissions: SessionTypes.Permissions;\n    relay?: RelayTypes.ProtocolOptions;\n    connection?: SignalTypes.ParamsConnection;\n  }\n\n  export interface ConnectionRespondParams {\n    approved: boolean;\n    uri: string;\n  }\n\n  export interface SessionRespondParams {\n    approved: boolean;\n    proposal: SessionTypes.Proposal;\n    response: SessionTypes.Response;\n  }\n\n  export type RespondParams = ConnectionRespondParams | SessionRespondParams;\n\n  export type UpdateParams = SessionTypes.UpdateParams;\n\n  export type NoticeParams = SessionTypes.NoticeParams;\n\n  export interface RequestParams {\n    topic: string;\n    request: JsonRpcRequest;\n    chainId?: string;\n  }\n\n  export interface ResolveParams {\n    topic: string;\n    response: JsonRpcResponse;\n  }\n\n  export interface DisconnectParams {\n    topic: string;\n    reason: string;\n  }\n}\n```\n\n## License\n\nLGPL-3.0\n","license":"LGPL-3.0","scripts":{"help":"tsc --help","lint":"eslint -c '../../.eslintrc' --fix './src/**/*.ts'","test":"env TS_NODE_PROJECT=\"tsconfig.cjs.json\" mocha --exit -r ts-node/register ./test/**/*.spec.ts","build":"run-s build:pre build:cjs build:umd","clean":"rm -rf dist","watch":"tsc -p tsconfig.json --watch","build:cjs":"npx tsc -p tsconfig.cjs.json","build:pre":"run-s clean","build:umd":"webpack"},"_npmUser":{"name":"pedrouid","email":"pedrogomes94@gmail.com"},"homepage":"https://github.com/walletconnect-labs/walletconnect-v2-monorepo/","keywords":["wallet","walletconnect"],"deprecated":"WalletConnect's v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/","_npmVersion":"6.14.8","description":"Client for WalletConnect Protocol","directories":{},"maintainers":[{"name":"pedrouid","email":"pedrogomes94@gmail.com"}],"_nodeVersion":"13.13.0","dependencies":{"pino":"^6.7.0","pino-pretty":"^4.3.0","safe-json-utils":"^1.1.1","@pedrouid/iso-store":"^1.0.5","@walletconnect/types":"^2.0.0-alpha.5","@walletconnect/utils":"^2.0.0-alpha.5","@json-rpc-tools/utils":"^1.2.1","@json-rpc-tools/provider":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"chai":"^4.2.0","tsdx":"^0.14.1","mocha":"^8.2.1","eslint":"^5.16.0","core-js":"^3.6.5","webpack":"^4.41.5","prettier":"^1.19.1","@babel/cli":"^7.12.1","typescript":"^3.7.5","@babel/core":"^7.12.3","@babel/node":"^7.12.1","@types/chai":"^4.2.14","@types/jest":"^22.2.3","@types/node":"^14.14.2","@types/pino":"^6.3.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.10","@types/mocha":"^8.0.4","@babel/polyfill":"^7.12.1","@babel/register":"^7.12.1","@babel/preset-env":"^7.12.1","eslint-plugin-node":"^9.2.0","eslint-plugin-react":"^7.19.0","eslint-plugin-import":"^2.20.1","eslint-plugin-promise":"^4.2.1","eslint-config-prettier":"^6.10.0","eslint-config-standard":"^12.0.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-standard":"^4.0.1","@babel/preset-typescript":"^7.12.1","@typescript-eslint/parser":"^2.24.0","@typescript-eslint/eslint-plugin":"^2.24.0"},"_npmOperationalInternal":{"tmp":"tmp/client_2.0.0-alpha.5_1606937359026_0.6829482580593904","host":"s3://npm-registry-packages"},"_id":"@walletconnect/client@2.0.0-alpha.5","version":"2.0.0-alpha.5"}