@inco/js 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cjs/advancedacl/index.d.ts +2 -0
  2. package/dist/cjs/advancedacl/index.js +19 -0
  3. package/dist/cjs/advancedacl/session-key.d.ts +28 -0
  4. package/dist/cjs/advancedacl/session-key.js +176 -0
  5. package/dist/cjs/advancedacl/types.d.ts +15 -0
  6. package/dist/cjs/advancedacl/types.js +3 -0
  7. package/dist/cjs/generated/abis/lightning-preview.d.ts +2265 -0
  8. package/dist/cjs/generated/abis/lightning-preview.js +1429 -0
  9. package/dist/cjs/lite/lightning.d.ts +55 -1
  10. package/dist/cjs/lite/lightning.js +73 -2
  11. package/dist/cjs/local/local-node.d.ts +1 -1
  12. package/dist/cjs/local/local-node.js +15 -15
  13. package/dist/esm/advancedacl/index.d.ts +2 -0
  14. package/dist/esm/advancedacl/index.js +3 -0
  15. package/dist/esm/advancedacl/session-key.d.ts +28 -0
  16. package/dist/esm/advancedacl/session-key.js +170 -0
  17. package/dist/esm/advancedacl/types.d.ts +15 -0
  18. package/dist/esm/advancedacl/types.js +2 -0
  19. package/dist/esm/generated/abis/lightning-preview.d.ts +2265 -0
  20. package/dist/esm/generated/abis/lightning-preview.js +1426 -0
  21. package/dist/esm/lite/lightning.d.ts +55 -1
  22. package/dist/esm/lite/lightning.js +73 -2
  23. package/dist/esm/local/local-node.d.ts +1 -1
  24. package/dist/esm/local/local-node.js +3 -3
  25. package/dist/types/advancedacl/index.d.ts +2 -0
  26. package/dist/types/advancedacl/session-key.d.ts +28 -0
  27. package/dist/types/advancedacl/types.d.ts +15 -0
  28. package/dist/types/generated/abis/lightning-preview.d.ts +2265 -0
  29. package/dist/types/lite/lightning.d.ts +55 -1
  30. package/dist/types/local/local-node.d.ts +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export * from './session-key.js';
2
+ export * from './types.js';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./session-key.js"), exports);
18
+ __exportStar(require("./types.js"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyw2Q0FBMkIifQ==
@@ -0,0 +1,28 @@
1
+ import type { Client } from '@connectrpc/connect';
2
+ import { type Account, type Address, type Chain, type Hex, type Transport, type WalletClient } from 'viem';
3
+ import { type EciesScheme, SupportedFheType } from '../encryption/encryption.js';
4
+ import type { KmsService, Secp256k1Keypair } from '../lite/index.js';
5
+ import { type ReencryptFnArgs } from '../reencryption/index.js';
6
+ import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
7
+ export interface Session {
8
+ decrypter: Address;
9
+ expiresAt: bigint;
10
+ }
11
+ export declare function createAllowanceVoucher(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>, verifyingContract: Address, callFunction: Hex, sharerArgData: Hex): Promise<AllowanceVoucher>;
12
+ export interface GrantSessionKeyArgs {
13
+ chainId: bigint;
14
+ incoLiteAddress: Address;
15
+ sessionVerifierContractAddress: Address;
16
+ granteeAddress: Address;
17
+ sharerWalletClient: WalletClient<Transport, Chain, Account>;
18
+ expiresAt: Date;
19
+ }
20
+ export declare function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }: GrantSessionKeyArgs): Promise<AllowanceVoucherWithSig>;
21
+ export interface SessionKeyReencryptorArgs {
22
+ chainId: bigint;
23
+ ephemeralKeypair: Secp256k1Keypair;
24
+ kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
25
+ allowanceVoucherWithSig: AllowanceVoucherWithSig;
26
+ }
27
+ export declare function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }: SessionKeyReencryptorArgs): Promise<(<T extends SupportedFheType>({ handle }: ReencryptFnArgs<EciesScheme, T>) => Promise<import("../encryption/encryption.js").PlaintextOf<1, 0 | 5 | 7 | 8>>)>;
28
+ export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAllowanceVoucher = createAllowanceVoucher;
4
+ exports.grantSessionKey = grantSessionKey;
5
+ exports.sessionKeyReencryptor = sessionKeyReencryptor;
6
+ exports.updateActiveVouchersSessionNonce = updateActiveVouchersSessionNonce;
7
+ const viem_1 = require("viem");
8
+ const accounts_1 = require("viem/accounts");
9
+ const chain_js_1 = require("../chain.js");
10
+ const lightning_preview_js_1 = require("../generated/abis/lightning-preview.js");
11
+ const lightning_js_1 = require("../generated/abis/lightning.js");
12
+ const index_js_1 = require("../lite/index.js");
13
+ const index_js_2 = require("../reencryption/index.js");
14
+ // Given a sharer's wallet client, an incoLite contract address, and a
15
+ // (verifyingContract, callFunction, sharerArgData) tuple, this function
16
+ // creates an AllowanceVoucher.
17
+ async function createAllowanceVoucher(incoLiteAddress, sharerWalletClient, verifyingContract, callFunction, sharerArgData) {
18
+ const advancedACL = (0, viem_1.getContract)({
19
+ address: incoLiteAddress,
20
+ // Could have used the incoLightningAbi, but this is more efficient.
21
+ abi: lightning_preview_js_1.advancedAccessControlAbi,
22
+ client: sharerWalletClient,
23
+ });
24
+ // The session nonce in the AllowanceVoucher must match the current active
25
+ // session nonce of the sharer on-chain.
26
+ const sessionNonce = await advancedACL.read.getActiveVouchersSessionNonce([sharerWalletClient.account.address]);
27
+ return {
28
+ sessionNonce,
29
+ verifyingContract,
30
+ callFunction,
31
+ sharerArgData,
32
+ };
33
+ }
34
+ // Let the sharer grant a session to the requester.
35
+ async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }) {
36
+ const session = {
37
+ decrypter: granteeAddress,
38
+ expiresAt: BigInt(Math.floor(expiresAt.getTime() / 1000)),
39
+ };
40
+ const sharerArgData = (0, viem_1.encodeAbiParameters)(getSessionAbi(), [session.decrypter, session.expiresAt]);
41
+ // Get the domain name and version from the incoLite contract.
42
+ const incoLitePreview = (0, viem_1.getContract)({
43
+ abi: lightning_js_1.incoLightningAbi,
44
+ address: incoLiteAddress,
45
+ client: sharerWalletClient,
46
+ });
47
+ const eip712DomainName = await incoLitePreview.read.getName();
48
+ const eip712DomainVersion = await incoLitePreview.read.getVersion();
49
+ const voucher = await createAllowanceVoucher(incoLiteAddress, sharerWalletClient,
50
+ // Careful that the verifying contract here is the SessionVerifier contract,
51
+ // not the incoLite contract.
52
+ sessionVerifierContractAddress, (0, viem_1.toFunctionSelector)(getCanUseSessionAbi()), sharerArgData);
53
+ const eip712Payload = (0, index_js_2.createEIP712Payload)({
54
+ chainId,
55
+ primaryType: 'AllowanceVoucher',
56
+ primaryTypeFields: getAllowanceVoucherAbi(),
57
+ message: voucher,
58
+ // Related to comment above: careful that the verifying contract here is
59
+ // the incoLite contract (not the SessionVerifier contract).
60
+ verifyingContract: incoLiteAddress,
61
+ ...(eip712DomainName && { domainName: eip712DomainName }),
62
+ ...(eip712DomainVersion && { domainVersion: eip712DomainVersion }),
63
+ });
64
+ // Using browser extensions, this step will prompt the user to sign the
65
+ // payload.
66
+ const voucherSignature = await sharerWalletClient.signTypedData(eip712Payload);
67
+ return {
68
+ sharer: sharerWalletClient.account.address,
69
+ voucher,
70
+ voucherSignature,
71
+ };
72
+ }
73
+ // The sessionKeyReencryptor function is a reencryptor that uses a session key
74
+ // to reencrypt data.
75
+ async function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }) {
76
+ const kmsClient = (0, index_js_1.getKmsClient)(kmsConnectRpcEndpointOrClient || (0, index_js_1.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
77
+ const requesterAccount = (0, accounts_1.privateKeyToAccount)(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
78
+ const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
79
+ // Sign the EIP712 attesting that the requester has access to the private key
80
+ // corresponding to the ephemeral public key.
81
+ const eip712Payload = (0, index_js_1.reencryptEIP712)(chainId, ephemeralPubKey);
82
+ // Since the account is an ephemeral keypair stored in memory (not in Metamask),
83
+ // this step will NOT prompt the user with a pop-up.
84
+ const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
85
+ return async function reencrypt({ handle }) {
86
+ const reencryptRequest = {
87
+ $typeName: 'inco.kms.lite.v1.ReencryptRequest',
88
+ userAddress: requesterAccount.address,
89
+ ephemeralPubKey,
90
+ eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
91
+ handlesWithProofs: [
92
+ {
93
+ $typeName: 'inco.kms.lite.v1.HandleWithProof',
94
+ handle,
95
+ aclProof: {
96
+ $typeName: 'inco.kms.lite.v1.ACLProof',
97
+ proof: {
98
+ value: {
99
+ $typeName: 'inco.kms.lite.v1.IncoLiteAdvancedACLProof',
100
+ allowanceProof: {
101
+ $typeName: 'inco.kms.lite.v1.AllowanceProof',
102
+ sharer: allowanceVoucherWithSig.sharer,
103
+ voucher: {
104
+ // Converting from the AllowanceVoucher domain type to the
105
+ // AllowanceVoucher proto type.
106
+ $typeName: 'inco.kms.lite.v1.AllowanceVoucher',
107
+ sessionNonce: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucher.sessionNonce),
108
+ verifyingContract: allowanceVoucherWithSig.voucher.verifyingContract,
109
+ callFunction: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucher.callFunction),
110
+ sharerArgData: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucher.sharerArgData),
111
+ },
112
+ voucherSignature: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucherSignature),
113
+ // For SessionVerifier, the requesterArgData is empty.
114
+ requesterArgData: new Uint8Array(),
115
+ },
116
+ },
117
+ case: 'incoLiteAdvancedAclProof',
118
+ },
119
+ },
120
+ },
121
+ ],
122
+ };
123
+ const response = await kmsClient.reencrypt(reencryptRequest);
124
+ return (0, index_js_1.decryptGrpcResponse)(response, ephemeralKeypair, handle);
125
+ };
126
+ }
127
+ async function updateActiveVouchersSessionNonce(incoLiteAddress, sharerWalletClient) {
128
+ const advancedACL = (0, viem_1.getContract)({
129
+ address: incoLiteAddress,
130
+ abi: lightning_preview_js_1.advancedAccessControlAbi,
131
+ client: sharerWalletClient,
132
+ });
133
+ const txHash = await advancedACL.write.updateActiveVouchersSessionNonce();
134
+ return txHash;
135
+ }
136
+ // Below are helpers to get ABIs of functions/structs from the SessionVerifier
137
+ // contract.
138
+ // Get the ABI of the `AllowanceVoucher` struct.
139
+ function getAllowanceVoucherAbi() {
140
+ // Find the `allowanceVoucherDigest` function, it takes an AllowanceVoucher
141
+ // as sole argument.
142
+ const allowanceVoucherDigest = lightning_preview_js_1.advancedAccessControlAbi.find((item) => item.name === 'allowanceVoucherDigest');
143
+ if (!allowanceVoucherDigest) {
144
+ throw new Error('allowanceVoucherDigest not found');
145
+ }
146
+ // Get the input whose internalType is "struct AllowanceVoucher"
147
+ const allowanceVoucherInput = allowanceVoucherDigest.inputs.find((input) => input.internalType === 'struct AllowanceVoucher');
148
+ if (!allowanceVoucherInput) {
149
+ throw new Error('allowanceVoucherInput not found');
150
+ }
151
+ return allowanceVoucherInput.components;
152
+ }
153
+ // Get the ABI of the `Session` struct.
154
+ //
155
+ // We specifically created an ABIHelper.sol contract to export the Session
156
+ // struct from the SessionVerifier contract.
157
+ function getSessionAbi() {
158
+ const getSession = lightning_preview_js_1.abiHelperAbi.find((item) => 'name' in item && item.name === 'getSession');
159
+ if (!getSession) {
160
+ throw new Error('getSession not found');
161
+ }
162
+ const session = getSession.outputs[0];
163
+ if (!session) {
164
+ throw new Error('session not found');
165
+ }
166
+ return session.components;
167
+ }
168
+ // Get the ABI of the `canUseSession` function.
169
+ function getCanUseSessionAbi() {
170
+ const canUseSession = lightning_preview_js_1.sessionVerifierAbi.find((item) => 'name' in item && item.name === 'canUseSession');
171
+ if (!canUseSession) {
172
+ throw new Error('canUseSession not found');
173
+ }
174
+ return canUseSession;
175
+ }
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5Q0Esd0RBd0JDO0FBd0JELDBDQXNEQztBQXNCRCxzREEyREM7QUFFRCw0RUFXQztBQTVPRCwrQkFXYztBQUNkLDRDQUFvRDtBQUNwRCwwQ0FBZ0Q7QUFFaEQsaUZBQW9IO0FBQ3BILGlFQUFrRTtBQUVsRSwrQ0FBOEc7QUFDOUcsdURBQXFGO0FBa0JyRixzRUFBc0U7QUFDdEUsd0VBQXdFO0FBQ3hFLCtCQUErQjtBQUN4QixLQUFLLFVBQVUsc0JBQXNCLENBQzFDLGVBQXdCLEVBQ3hCLGtCQUEyRCxFQUMzRCxpQkFBMEIsRUFDMUIsWUFBaUIsRUFDakIsYUFBa0I7SUFFbEIsTUFBTSxXQUFXLEdBQUcsSUFBQSxrQkFBVyxFQUFDO1FBQzlCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLG9FQUFvRTtRQUNwRSxHQUFHLEVBQUUsK0NBQXdCO1FBQzdCLE1BQU0sRUFBRSxrQkFBa0I7S0FDM0IsQ0FBQyxDQUFDO0lBRUgsMEVBQTBFO0lBQzFFLHdDQUF3QztJQUN4QyxNQUFNLFlBQVksR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVoSCxPQUFPO1FBQ0wsWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDO0FBdUJELG1EQUFtRDtBQUM1QyxLQUFLLFVBQVUsZUFBZSxDQUFDLEVBQ3BDLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsU0FBUyxHQUNXO0lBQ3BCLE1BQU0sT0FBTyxHQUFHO1FBQ2QsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFF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
@@ -0,0 +1,15 @@
1
+ import { Address, Hex } from 'viem';
2
+ export type AllowanceVoucher = {
3
+ sessionNonce: Hex;
4
+ verifyingContract: Address;
5
+ callFunction: Hex;
6
+ sharerArgData: Hex;
7
+ };
8
+ export interface AllowanceVoucherWithSig {
9
+ sharer: Address;
10
+ voucher: AllowanceVoucher;
11
+ voucherSignature: Hex;
12
+ }
13
+ export interface AllowanceProof extends AllowanceVoucherWithSig {
14
+ requesterArgData: Uint8Array;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9