@pythnetwork/pyth-solana-receiver 0.1.0

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.
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export { PythSolanaReceiver } from "./PythSolanaReceiver";
2
+ export { TransactionBuilder } from "@pythnetwork/solana-utils";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionBuilder = exports.PythSolanaReceiver = void 0;
4
+ var PythSolanaReceiver_1 = require("./PythSolanaReceiver");
5
+ Object.defineProperty(exports, "PythSolanaReceiver", { enumerable: true, get: function () { return PythSolanaReceiver_1.PythSolanaReceiver; } });
6
+ var solana_utils_1 = require("@pythnetwork/solana-utils");
7
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return solana_utils_1.TransactionBuilder; } });
package/lib/vaa.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import { Keypair, PublicKey } from "@solana/web3.js";
3
+ import { WormholeCoreBridgeSolana } from "./idl/wormhole_core_bridge_solana";
4
+ import { Program } from "@coral-xyz/anchor";
5
+ import { InstructionWithEphemeralSigners } from "@pythnetwork/solana-utils";
6
+ export declare const VAA_START = 46;
7
+ export declare const VAA_SIGNATURE_SIZE = 66;
8
+ export declare const VAA_SPLIT_INDEX = 792;
9
+ export declare const DEFAULT_REDUCED_GUARDIAN_SET_SIZE = 5;
10
+ export declare function getGuardianSetIndex(vaa: Buffer): number;
11
+ export declare function trimSignatures(vaa: Buffer, n?: number): Buffer;
12
+ export declare function buildEncodedVaaCreateInstruction(wormhole: Program<WormholeCoreBridgeSolana>, vaa: Buffer, encodedVaaKeypair: Keypair): Promise<{
13
+ instruction: import("@solana/web3.js").TransactionInstruction;
14
+ signers: Keypair[];
15
+ }>;
16
+ export declare function buildWriteEncodedVaaWithSplit(wormhole: Program<WormholeCoreBridgeSolana>, vaa: Buffer, draftVaa: PublicKey): Promise<InstructionWithEphemeralSigners[]>;
17
+ //# sourceMappingURL=vaa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaa.d.ts","sourceRoot":"","sources":["../src/vaa.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,UAE9C;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,CAAC,SAAoC,GACpC,MAAM,CAeR;AAED,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,OAAO,CAAC,wBAAwB,CAAC,EAC3C,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,OAAO;;;GAU3B;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,OAAO,CAAC,wBAAwB,CAAC,EAC3C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,SAAS,GAClB,OAAO,CAAC,+BAA+B,EAAE,CAAC,CA2B5C"}
package/lib/vaa.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildWriteEncodedVaaWithSplit = exports.buildEncodedVaaCreateInstruction = exports.trimSignatures = exports.getGuardianSetIndex = exports.DEFAULT_REDUCED_GUARDIAN_SET_SIZE = exports.VAA_SPLIT_INDEX = exports.VAA_SIGNATURE_SIZE = exports.VAA_START = void 0;
4
+ exports.VAA_START = 46;
5
+ exports.VAA_SIGNATURE_SIZE = 66;
6
+ exports.VAA_SPLIT_INDEX = 792;
7
+ exports.DEFAULT_REDUCED_GUARDIAN_SET_SIZE = 5;
8
+ function getGuardianSetIndex(vaa) {
9
+ return vaa.readUInt32BE(1);
10
+ }
11
+ exports.getGuardianSetIndex = getGuardianSetIndex;
12
+ function trimSignatures(vaa, n = exports.DEFAULT_REDUCED_GUARDIAN_SET_SIZE) {
13
+ const currentNumSignatures = vaa[5];
14
+ if (n > currentNumSignatures) {
15
+ throw new Error("Resulting VAA can't have more signatures than the original VAA");
16
+ }
17
+ const trimmedVaa = Buffer.concat([
18
+ vaa.subarray(0, 6 + n * exports.VAA_SIGNATURE_SIZE),
19
+ vaa.subarray(6 + currentNumSignatures * exports.VAA_SIGNATURE_SIZE),
20
+ ]);
21
+ trimmedVaa[5] = n;
22
+ return trimmedVaa;
23
+ }
24
+ exports.trimSignatures = trimSignatures;
25
+ async function buildEncodedVaaCreateInstruction(wormhole, vaa, encodedVaaKeypair) {
26
+ const encodedVaaSize = vaa.length + exports.VAA_START;
27
+ return {
28
+ instruction: await wormhole.account.encodedVaa.createInstruction(encodedVaaKeypair, encodedVaaSize),
29
+ signers: [encodedVaaKeypair],
30
+ };
31
+ }
32
+ exports.buildEncodedVaaCreateInstruction = buildEncodedVaaCreateInstruction;
33
+ async function buildWriteEncodedVaaWithSplit(wormhole, vaa, draftVaa) {
34
+ return [
35
+ {
36
+ instruction: await wormhole.methods
37
+ .writeEncodedVaa({
38
+ index: 0,
39
+ data: vaa.subarray(0, exports.VAA_SPLIT_INDEX),
40
+ })
41
+ .accounts({
42
+ draftVaa,
43
+ })
44
+ .instruction(),
45
+ signers: [],
46
+ },
47
+ {
48
+ instruction: await wormhole.methods
49
+ .writeEncodedVaa({
50
+ index: exports.VAA_SPLIT_INDEX,
51
+ data: vaa.subarray(exports.VAA_SPLIT_INDEX),
52
+ })
53
+ .accounts({
54
+ draftVaa,
55
+ })
56
+ .instruction(),
57
+ signers: [],
58
+ },
59
+ ];
60
+ }
61
+ exports.buildWriteEncodedVaaWithSplit = buildWriteEncodedVaaWithSplit;
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@pythnetwork/pyth-solana-receiver",
3
+ "version": "0.1.0",
4
+ "description": "Pyth solana receiver SDK",
5
+ "homepage": "https://pyth.network",
6
+ "main": "lib/index.js",
7
+ "types": "lib/index.d.ts",
8
+ "files": [
9
+ "lib/**/*"
10
+ ],
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/pyth-network/pyth-crosschain.git",
14
+ "directory": "target_chains/solana/sdk/js"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "format": "prettier --write \"src/**/*.ts\"",
22
+ "lint": "eslint src/",
23
+ "test": "jest src/ --passWithNoTests",
24
+ "prepublishOnly": "npm run build && npm test && npm run lint",
25
+ "preversion": "npm run lint",
26
+ "version": "npm run format && git add -A src"
27
+ },
28
+ "keywords": [
29
+ "pyth",
30
+ "oracle"
31
+ ],
32
+ "license": "Apache-2.0",
33
+ "devDependencies": {
34
+ "@types/jest": "^29.4.0",
35
+ "@typescript-eslint/eslint-plugin": "^5.20.0",
36
+ "@typescript-eslint/parser": "^5.20.0",
37
+ "eslint": "^8.13.0",
38
+ "jest": "^29.4.0",
39
+ "prettier": "^2.6.2",
40
+ "quicktype": "^23.0.76",
41
+ "ts-jest": "^29.0.5",
42
+ "typescript": "^4.6.3"
43
+ },
44
+ "dependencies": {
45
+ "@coral-xyz/anchor": "^0.29.0",
46
+ "@pythnetwork/price-service-sdk": "*",
47
+ "@pythnetwork/solana-utils": "*",
48
+ "@solana/web3.js": "^1.90.0"
49
+ },
50
+ "gitHead": "47470860bf517a151819a6c86a13c0a5f13aae22"
51
+ }