@super-protocol/sp-nvtrust-wrapper 1.0.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/README.md ADDED
@@ -0,0 +1 @@
1
+ # sp-nvtrust-wrapper
@@ -0,0 +1,2 @@
1
+ export { NvtrustWrapper } from './nvtrust_wrapper';
2
+ export * from './proto/nvtrust_wrapper_types';
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
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
+ exports.NvtrustWrapper = void 0;
18
+ var nvtrust_wrapper_1 = require("./nvtrust_wrapper");
19
+ Object.defineProperty(exports, "NvtrustWrapper", { enumerable: true, get: function () { return nvtrust_wrapper_1.NvtrustWrapper; } });
20
+ __exportStar(require("./proto/nvtrust_wrapper_types"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,gEAA8C"}
@@ -0,0 +1,20 @@
1
+ import * as proto from './proto/nvtrust_wrapper_types';
2
+ export declare const defaultGPUpolicy = "{\n \"version\": \"3.0\",\n \"authorization-rules\": {\n \"type\": \"JWT\",\n \"overall-claims\": {\n \"x-nvidia-overall-att-result\": true,\n \"x-nvidia-ver\": \"2.0\"\n },\n \"detached-claims\": {\n \"measres\": \"success\",\n \"x-nvidia-gpu-arch-check\": true,\n \"x-nvidia-gpu-attestation-report-cert-chain-validated\": true,\n \"x-nvidia-gpu-attestation-report-parsed\": true,\n \"x-nvidia-gpu-attestation-report-nonce-match\": true,\n \"x-nvidia-gpu-attestation-report-signature-verified\": true,\n \"x-nvidia-gpu-driver-rim-fetched\": true,\n \"x-nvidia-gpu-driver-rim-schema-validated\": true,\n \"x-nvidia-gpu-driver-rim-cert-validated\": true,\n \"x-nvidia-gpu-driver-rim-signature-verified\": true,\n \"x-nvidia-gpu-driver-rim-measurements-available\": true,\n \"x-nvidia-gpu-vbios-rim-fetched\": true,\n \"x-nvidia-gpu-vbios-rim-schema-validated\": true,\n \"x-nvidia-gpu-vbios-rim-cert-validated\": true,\n \"x-nvidia-gpu-vbios-rim-signature-verified\": true,\n \"x-nvidia-gpu-vbios-rim-measurements-available\": true,\n \"x-nvidia-gpu-vbios-index-no-conflict\": true,\n \"dbgstat\": \"disabled\"\n }\n }\n}";
3
+ export interface GPUInfo {
4
+ model: string;
5
+ driverVersion: string;
6
+ vbios: string;
7
+ dbgStat: boolean;
8
+ }
9
+ export declare class NvtrustWrapper {
10
+ private readonly tmpDir;
11
+ private readonly timeoutMs;
12
+ constructor(tmpDir?: string, timeoutMs?: number);
13
+ gramineCompatibleRmDir(dirPath: string): Promise<void>;
14
+ private pythonCall;
15
+ getGPUTopology(): Promise<proto.GPUTopologyResult>;
16
+ generateNonce(): string;
17
+ getNvidiaToken(options: proto.GetNRASToken): Promise<proto.NvidiaToken>;
18
+ validateToken(options: proto.ValidateToken): Promise<proto.VerificationResult>;
19
+ extractGPuInfoFromToken(token: proto.NvidiaToken): GPUInfo[];
20
+ }
@@ -0,0 +1,216 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.NvtrustWrapper = exports.defaultGPUpolicy = void 0;
27
+ const child_process_1 = require("child_process");
28
+ const fs = __importStar(require("fs/promises"));
29
+ const path = __importStar(require("path"));
30
+ const fs_1 = require("fs");
31
+ const proto = __importStar(require("./proto/nvtrust_wrapper_types"));
32
+ const crypto_1 = require("crypto");
33
+ const jwt = __importStar(require("jsonwebtoken"));
34
+ exports.defaultGPUpolicy = `{
35
+ "version": "3.0",
36
+ "authorization-rules": {
37
+ "type": "JWT",
38
+ "overall-claims": {
39
+ "x-nvidia-overall-att-result": true,
40
+ "x-nvidia-ver": "2.0"
41
+ },
42
+ "detached-claims": {
43
+ "measres": "success",
44
+ "x-nvidia-gpu-arch-check": true,
45
+ "x-nvidia-gpu-attestation-report-cert-chain-validated": true,
46
+ "x-nvidia-gpu-attestation-report-parsed": true,
47
+ "x-nvidia-gpu-attestation-report-nonce-match": true,
48
+ "x-nvidia-gpu-attestation-report-signature-verified": true,
49
+ "x-nvidia-gpu-driver-rim-fetched": true,
50
+ "x-nvidia-gpu-driver-rim-schema-validated": true,
51
+ "x-nvidia-gpu-driver-rim-cert-validated": true,
52
+ "x-nvidia-gpu-driver-rim-signature-verified": true,
53
+ "x-nvidia-gpu-driver-rim-measurements-available": true,
54
+ "x-nvidia-gpu-vbios-rim-fetched": true,
55
+ "x-nvidia-gpu-vbios-rim-schema-validated": true,
56
+ "x-nvidia-gpu-vbios-rim-cert-validated": true,
57
+ "x-nvidia-gpu-vbios-rim-signature-verified": true,
58
+ "x-nvidia-gpu-vbios-rim-measurements-available": true,
59
+ "x-nvidia-gpu-vbios-index-no-conflict": true,
60
+ "dbgstat": "disabled"
61
+ }
62
+ }
63
+ }`;
64
+ class NvtrustWrapper {
65
+ tmpDir;
66
+ timeoutMs;
67
+ constructor(tmpDir, timeoutMs) {
68
+ this.tmpDir = tmpDir ?? '/tmp';
69
+ this.timeoutMs = timeoutMs ?? 10000;
70
+ }
71
+ async gramineCompatibleRmDir(dirPath) {
72
+ try {
73
+ await fs.access(dirPath, fs_1.constants.F_OK);
74
+ }
75
+ catch {
76
+ return;
77
+ }
78
+ const files = await fs.readdir(dirPath);
79
+ for (const file of files) {
80
+ const filePath = path.join(dirPath, file);
81
+ const stat = await fs.lstat(filePath);
82
+ if (stat.isDirectory()) {
83
+ await this.gramineCompatibleRmDir(filePath);
84
+ }
85
+ else {
86
+ await fs.unlink(filePath);
87
+ }
88
+ }
89
+ await fs.rmdir(dirPath);
90
+ }
91
+ async pythonCall(request) {
92
+ const serializedRequest = proto.MethodCallRequest.encode(request).finish();
93
+ const tempDir = await fs.mkdtemp(path.join(this.tmpDir, 'temp-'));
94
+ const logDir = path.join(tempDir, 'logs');
95
+ await fs.mkdir(logDir);
96
+ try {
97
+ await fs.writeFile(path.join(tempDir, 'request.bin'), serializedRequest);
98
+ return new Promise((resolve, reject) => {
99
+ const pythonProcess = (0, child_process_1.spawn)(`${__dirname}/../py-venv/bin/python3`, ['-B', `${__dirname}/../py/nvtrust_wrapper.py`, tempDir], {
100
+ cwd: logDir,
101
+ });
102
+ let timeoutId;
103
+ if (this.timeoutMs && this.timeoutMs > 0) {
104
+ timeoutId = setTimeout(() => {
105
+ pythonProcess.kill();
106
+ reject(new Error(`Process timed out after ${this.timeoutMs}ms`));
107
+ }, this.timeoutMs);
108
+ }
109
+ pythonProcess.on('close', async (exitCode) => {
110
+ if (timeoutId)
111
+ clearTimeout(timeoutId);
112
+ if (exitCode === 0) {
113
+ const result = await fs.readFile(path.join(tempDir, 'response.bin'));
114
+ resolve(result);
115
+ }
116
+ else {
117
+ const error = await fs.readFile(path.join(tempDir, 'error.txt'), 'utf-8');
118
+ reject(`Python error: ${error.trim()}`);
119
+ }
120
+ });
121
+ pythonProcess.on('error', (error) => {
122
+ if (timeoutId)
123
+ clearTimeout(timeoutId);
124
+ reject(new Error(`Failed to start process: ${error.message}`));
125
+ });
126
+ }).finally(async () => {
127
+ await this.gramineCompatibleRmDir(tempDir);
128
+ });
129
+ }
130
+ catch (err) {
131
+ await this.gramineCompatibleRmDir(tempDir);
132
+ throw err;
133
+ }
134
+ }
135
+ async getGPUTopology() {
136
+ const request = proto.MethodCallRequest.fromPartial({
137
+ topology: proto.GetGPUTopology.fromPartial({}),
138
+ });
139
+ const result = await this.pythonCall(request);
140
+ return proto.GPUTopologyResult.decode(result);
141
+ }
142
+ generateNonce() {
143
+ return (0, crypto_1.randomBytes)(32).toString('hex');
144
+ }
145
+ async getNvidiaToken(options) {
146
+ const request = proto.MethodCallRequest.fromPartial({
147
+ nrasToken: options,
148
+ });
149
+ const result = await this.pythonCall(request);
150
+ return proto.NvidiaToken.decode(result);
151
+ }
152
+ async validateToken(options) {
153
+ const request = proto.MethodCallRequest.fromPartial({
154
+ validateToken: options,
155
+ });
156
+ const result = await this.pythonCall(request);
157
+ return proto.VerificationResult.decode(result);
158
+ }
159
+ extractGPuInfoFromToken(token) {
160
+ const jsonArray = JSON.parse(token.jwt);
161
+ const gpuInfo = [];
162
+ if (Array.isArray(jsonArray) && jsonArray.length >= 2) {
163
+ for (const [key, value] of Object.entries(jsonArray[1])) {
164
+ if (key !== 'REMOTE_GPU_CLAIMS') {
165
+ throw new Error(`The expected value does not match REMOTE_GPU_CLAIMS. ${key} found`);
166
+ }
167
+ if (Array.isArray(value)) {
168
+ for (const item of value) {
169
+ if (typeof item === 'object' && item !== null && !Array.isArray(item)) {
170
+ for (const [, v] of Object.entries(item)) {
171
+ try {
172
+ const payload = jwt.decode(v, {
173
+ complete: false,
174
+ json: false,
175
+ });
176
+ if (payload) {
177
+ gpuInfo.push({
178
+ model: payload['hwmodel'],
179
+ driverVersion: payload['x-nvidia-gpu-driver-version'],
180
+ vbios: payload['x-nvidia-gpu-vbios-version'],
181
+ dbgStat: payload['dbgstat'] === 'disabled' ? false : true,
182
+ });
183
+ }
184
+ }
185
+ catch (err) {
186
+ continue;
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ }
194
+ return gpuInfo;
195
+ }
196
+ }
197
+ exports.NvtrustWrapper = NvtrustWrapper;
198
+ (async () => {
199
+ const wrapper = new NvtrustWrapper();
200
+ //const topology = await wrapper.getGPUTopology();
201
+ //console.log(topology);
202
+ const token = await wrapper.getNvidiaToken({
203
+ device: proto.NvidiaDeviceType.GPU,
204
+ nonce: '3bb86d2df2736dac5576772e4bef6c25a38a2c1fd3d1bda37cd3e7980a34475d',
205
+ ppcieMode: false,
206
+ });
207
+ const res = await wrapper.validateToken({
208
+ device: proto.NvidiaDeviceType.GPU,
209
+ token,
210
+ policy: exports.defaultGPUpolicy,
211
+ });
212
+ console.log(res);
213
+ const gpu = wrapper.extractGPuInfoFromToken(token);
214
+ console.log(gpu);
215
+ })();
216
+ //# sourceMappingURL=nvtrust_wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nvtrust_wrapper.js","sourceRoot":"","sources":["../src/nvtrust_wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import _m0 from "protobufjs/minimal.js";
2
+ export declare const protobufPackage = "nvtrust_wrapper_types";
3
+ export declare enum NvidiaDeviceType {
4
+ GPU = 0,
5
+ SWITCH = 1
6
+ }
7
+ export declare function nvidiaDeviceTypeFromJSON(object: any): NvidiaDeviceType;
8
+ export declare function nvidiaDeviceTypeToJSON(object: NvidiaDeviceType): string;
9
+ export interface GetGPUTopology {
10
+ }
11
+ export interface GPUTopologyResult {
12
+ gpuCount: number;
13
+ nvswitchCount: number;
14
+ }
15
+ export interface GetNRASToken {
16
+ device: NvidiaDeviceType;
17
+ nonce: string;
18
+ ppcieMode: boolean;
19
+ }
20
+ export interface NvidiaToken {
21
+ jwt: string;
22
+ }
23
+ export interface ValidateToken {
24
+ token: NvidiaToken | undefined;
25
+ policy: string;
26
+ device: NvidiaDeviceType;
27
+ }
28
+ export interface VerificationResult {
29
+ success: boolean;
30
+ }
31
+ export interface MethodCallRequest {
32
+ topology?: GetGPUTopology | undefined;
33
+ nrasToken?: GetNRASToken | undefined;
34
+ validateToken?: ValidateToken | undefined;
35
+ }
36
+ export declare const GetGPUTopology: {
37
+ encode(_: GetGPUTopology, writer?: _m0.Writer): _m0.Writer;
38
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetGPUTopology;
39
+ fromJSON(_: any): GetGPUTopology;
40
+ toJSON(_: GetGPUTopology): unknown;
41
+ create<I extends {} & {} & { [K in Exclude<keyof I, never>]: never; }>(base?: I | undefined): GetGPUTopology;
42
+ fromPartial<I_1 extends {} & {} & { [K_1 in Exclude<keyof I_1, never>]: never; }>(_: I_1): GetGPUTopology;
43
+ };
44
+ export declare const GPUTopologyResult: {
45
+ encode(message: GPUTopologyResult, writer?: _m0.Writer): _m0.Writer;
46
+ decode(input: _m0.Reader | Uint8Array, length?: number): GPUTopologyResult;
47
+ fromJSON(object: any): GPUTopologyResult;
48
+ toJSON(message: GPUTopologyResult): unknown;
49
+ create<I extends {
50
+ gpuCount?: number | undefined;
51
+ nvswitchCount?: number | undefined;
52
+ } & {
53
+ gpuCount?: number | undefined;
54
+ nvswitchCount?: number | undefined;
55
+ } & { [K in Exclude<keyof I, keyof GPUTopologyResult>]: never; }>(base?: I | undefined): GPUTopologyResult;
56
+ fromPartial<I_1 extends {
57
+ gpuCount?: number | undefined;
58
+ nvswitchCount?: number | undefined;
59
+ } & {
60
+ gpuCount?: number | undefined;
61
+ nvswitchCount?: number | undefined;
62
+ } & { [K_1 in Exclude<keyof I_1, keyof GPUTopologyResult>]: never; }>(object: I_1): GPUTopologyResult;
63
+ };
64
+ export declare const GetNRASToken: {
65
+ encode(message: GetNRASToken, writer?: _m0.Writer): _m0.Writer;
66
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetNRASToken;
67
+ fromJSON(object: any): GetNRASToken;
68
+ toJSON(message: GetNRASToken): unknown;
69
+ create<I extends {
70
+ device?: NvidiaDeviceType | undefined;
71
+ nonce?: string | undefined;
72
+ ppcieMode?: boolean | undefined;
73
+ } & {
74
+ device?: NvidiaDeviceType | undefined;
75
+ nonce?: string | undefined;
76
+ ppcieMode?: boolean | undefined;
77
+ } & { [K in Exclude<keyof I, keyof GetNRASToken>]: never; }>(base?: I | undefined): GetNRASToken;
78
+ fromPartial<I_1 extends {
79
+ device?: NvidiaDeviceType | undefined;
80
+ nonce?: string | undefined;
81
+ ppcieMode?: boolean | undefined;
82
+ } & {
83
+ device?: NvidiaDeviceType | undefined;
84
+ nonce?: string | undefined;
85
+ ppcieMode?: boolean | undefined;
86
+ } & { [K_1 in Exclude<keyof I_1, keyof GetNRASToken>]: never; }>(object: I_1): GetNRASToken;
87
+ };
88
+ export declare const NvidiaToken: {
89
+ encode(message: NvidiaToken, writer?: _m0.Writer): _m0.Writer;
90
+ decode(input: _m0.Reader | Uint8Array, length?: number): NvidiaToken;
91
+ fromJSON(object: any): NvidiaToken;
92
+ toJSON(message: NvidiaToken): unknown;
93
+ create<I extends {
94
+ jwt?: string | undefined;
95
+ } & {
96
+ jwt?: string | undefined;
97
+ } & { [K in Exclude<keyof I, "jwt">]: never; }>(base?: I | undefined): NvidiaToken;
98
+ fromPartial<I_1 extends {
99
+ jwt?: string | undefined;
100
+ } & {
101
+ jwt?: string | undefined;
102
+ } & { [K_1 in Exclude<keyof I_1, "jwt">]: never; }>(object: I_1): NvidiaToken;
103
+ };
104
+ export declare const ValidateToken: {
105
+ encode(message: ValidateToken, writer?: _m0.Writer): _m0.Writer;
106
+ decode(input: _m0.Reader | Uint8Array, length?: number): ValidateToken;
107
+ fromJSON(object: any): ValidateToken;
108
+ toJSON(message: ValidateToken): unknown;
109
+ create<I extends {
110
+ token?: {
111
+ jwt?: string | undefined;
112
+ } | undefined;
113
+ policy?: string | undefined;
114
+ device?: NvidiaDeviceType | undefined;
115
+ } & {
116
+ token?: ({
117
+ jwt?: string | undefined;
118
+ } & {
119
+ jwt?: string | undefined;
120
+ } & { [K in Exclude<keyof I["token"], "jwt">]: never; }) | undefined;
121
+ policy?: string | undefined;
122
+ device?: NvidiaDeviceType | undefined;
123
+ } & { [K_1 in Exclude<keyof I, keyof ValidateToken>]: never; }>(base?: I | undefined): ValidateToken;
124
+ fromPartial<I_1 extends {
125
+ token?: {
126
+ jwt?: string | undefined;
127
+ } | undefined;
128
+ policy?: string | undefined;
129
+ device?: NvidiaDeviceType | undefined;
130
+ } & {
131
+ token?: ({
132
+ jwt?: string | undefined;
133
+ } & {
134
+ jwt?: string | undefined;
135
+ } & { [K_2 in Exclude<keyof I_1["token"], "jwt">]: never; }) | undefined;
136
+ policy?: string | undefined;
137
+ device?: NvidiaDeviceType | undefined;
138
+ } & { [K_3 in Exclude<keyof I_1, keyof ValidateToken>]: never; }>(object: I_1): ValidateToken;
139
+ };
140
+ export declare const VerificationResult: {
141
+ encode(message: VerificationResult, writer?: _m0.Writer): _m0.Writer;
142
+ decode(input: _m0.Reader | Uint8Array, length?: number): VerificationResult;
143
+ fromJSON(object: any): VerificationResult;
144
+ toJSON(message: VerificationResult): unknown;
145
+ create<I extends {
146
+ success?: boolean | undefined;
147
+ } & {
148
+ success?: boolean | undefined;
149
+ } & { [K in Exclude<keyof I, "success">]: never; }>(base?: I | undefined): VerificationResult;
150
+ fromPartial<I_1 extends {
151
+ success?: boolean | undefined;
152
+ } & {
153
+ success?: boolean | undefined;
154
+ } & { [K_1 in Exclude<keyof I_1, "success">]: never; }>(object: I_1): VerificationResult;
155
+ };
156
+ export declare const MethodCallRequest: {
157
+ encode(message: MethodCallRequest, writer?: _m0.Writer): _m0.Writer;
158
+ decode(input: _m0.Reader | Uint8Array, length?: number): MethodCallRequest;
159
+ fromJSON(object: any): MethodCallRequest;
160
+ toJSON(message: MethodCallRequest): unknown;
161
+ create<I extends {
162
+ topology?: {} | undefined;
163
+ nrasToken?: {
164
+ device?: NvidiaDeviceType | undefined;
165
+ nonce?: string | undefined;
166
+ ppcieMode?: boolean | undefined;
167
+ } | undefined;
168
+ validateToken?: {
169
+ token?: {
170
+ jwt?: string | undefined;
171
+ } | undefined;
172
+ policy?: string | undefined;
173
+ device?: NvidiaDeviceType | undefined;
174
+ } | undefined;
175
+ } & {
176
+ topology?: ({} & {} & { [K in Exclude<keyof I["topology"], never>]: never; }) | undefined;
177
+ nrasToken?: ({
178
+ device?: NvidiaDeviceType | undefined;
179
+ nonce?: string | undefined;
180
+ ppcieMode?: boolean | undefined;
181
+ } & {
182
+ device?: NvidiaDeviceType | undefined;
183
+ nonce?: string | undefined;
184
+ ppcieMode?: boolean | undefined;
185
+ } & { [K_1 in Exclude<keyof I["nrasToken"], keyof GetNRASToken>]: never; }) | undefined;
186
+ validateToken?: ({
187
+ token?: {
188
+ jwt?: string | undefined;
189
+ } | undefined;
190
+ policy?: string | undefined;
191
+ device?: NvidiaDeviceType | undefined;
192
+ } & {
193
+ token?: ({
194
+ jwt?: string | undefined;
195
+ } & {
196
+ jwt?: string | undefined;
197
+ } & { [K_2 in Exclude<keyof I["validateToken"]["token"], "jwt">]: never; }) | undefined;
198
+ policy?: string | undefined;
199
+ device?: NvidiaDeviceType | undefined;
200
+ } & { [K_3 in Exclude<keyof I["validateToken"], keyof ValidateToken>]: never; }) | undefined;
201
+ } & { [K_4 in Exclude<keyof I, keyof MethodCallRequest>]: never; }>(base?: I | undefined): MethodCallRequest;
202
+ fromPartial<I_1 extends {
203
+ topology?: {} | undefined;
204
+ nrasToken?: {
205
+ device?: NvidiaDeviceType | undefined;
206
+ nonce?: string | undefined;
207
+ ppcieMode?: boolean | undefined;
208
+ } | undefined;
209
+ validateToken?: {
210
+ token?: {
211
+ jwt?: string | undefined;
212
+ } | undefined;
213
+ policy?: string | undefined;
214
+ device?: NvidiaDeviceType | undefined;
215
+ } | undefined;
216
+ } & {
217
+ topology?: ({} & {} & { [K_5 in Exclude<keyof I_1["topology"], never>]: never; }) | undefined;
218
+ nrasToken?: ({
219
+ device?: NvidiaDeviceType | undefined;
220
+ nonce?: string | undefined;
221
+ ppcieMode?: boolean | undefined;
222
+ } & {
223
+ device?: NvidiaDeviceType | undefined;
224
+ nonce?: string | undefined;
225
+ ppcieMode?: boolean | undefined;
226
+ } & { [K_6 in Exclude<keyof I_1["nrasToken"], keyof GetNRASToken>]: never; }) | undefined;
227
+ validateToken?: ({
228
+ token?: {
229
+ jwt?: string | undefined;
230
+ } | undefined;
231
+ policy?: string | undefined;
232
+ device?: NvidiaDeviceType | undefined;
233
+ } & {
234
+ token?: ({
235
+ jwt?: string | undefined;
236
+ } & {
237
+ jwt?: string | undefined;
238
+ } & { [K_7 in Exclude<keyof I_1["validateToken"]["token"], "jwt">]: never; }) | undefined;
239
+ policy?: string | undefined;
240
+ device?: NvidiaDeviceType | undefined;
241
+ } & { [K_8 in Exclude<keyof I_1["validateToken"], keyof ValidateToken>]: never; }) | undefined;
242
+ } & { [K_9 in Exclude<keyof I_1, keyof MethodCallRequest>]: never; }>(object: I_1): MethodCallRequest;
243
+ };
244
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
245
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
246
+ [K in keyof T]?: DeepPartial<T[K]>;
247
+ } : Partial<T>;
248
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
249
+ export type Exact<P, I extends P> = P extends Builtin ? P : P & {
250
+ [K in keyof P]: Exact<P[K], I[K]>;
251
+ } & {
252
+ [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
253
+ };
254
+ export {};