@1upmonster/duel 0.1.8 → 0.2.2
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 +110 -59
- package/dist/admin.d.ts +25 -40
- package/dist/admin.js +93 -114
- package/dist/encryption.js +1 -2
- package/dist/generated/duel/accounts/index.d.ts +10 -0
- package/dist/generated/duel/accounts/index.js +11 -0
- package/dist/generated/duel/accounts/matchTicket.d.ts +38 -0
- package/dist/generated/duel/accounts/matchTicket.js +45 -0
- package/dist/generated/duel/accounts/queue.d.ts +42 -0
- package/dist/generated/duel/accounts/queue.js +45 -0
- package/dist/generated/duel/accounts/tenant.d.ts +41 -0
- package/dist/generated/duel/accounts/tenant.js +44 -0
- package/dist/generated/duel/errors/duel.d.ts +31 -0
- package/dist/generated/duel/errors/duel.js +35 -0
- package/dist/generated/duel/errors/index.d.ts +8 -0
- package/dist/generated/duel/errors/index.js +9 -0
- package/dist/generated/duel/index.d.ts +12 -0
- package/dist/generated/duel/index.js +13 -0
- package/dist/generated/duel/instructions/cancelTicket.d.ts +45 -0
- package/dist/generated/duel/instructions/cancelTicket.js +56 -0
- package/dist/generated/duel/instructions/closeTicket.d.ts +45 -0
- package/dist/generated/duel/instructions/closeTicket.js +56 -0
- package/dist/generated/duel/instructions/commitTickets.d.ts +39 -0
- package/dist/generated/duel/instructions/commitTickets.js +50 -0
- package/dist/generated/duel/instructions/createTicket.d.ts +48 -0
- package/dist/generated/duel/instructions/createTicket.js +63 -0
- package/dist/generated/duel/instructions/delegateQueue.d.ts +69 -0
- package/dist/generated/duel/instructions/delegateQueue.js +90 -0
- package/dist/generated/duel/instructions/delegateTicket.d.ts +69 -0
- package/dist/generated/duel/instructions/delegateTicket.js +90 -0
- package/dist/generated/duel/instructions/flushMatches.d.ts +37 -0
- package/dist/generated/duel/instructions/flushMatches.js +43 -0
- package/dist/generated/duel/instructions/index.d.ts +19 -0
- package/dist/generated/duel/instructions/index.js +20 -0
- package/dist/generated/duel/instructions/initializeQueue.d.ts +48 -0
- package/dist/generated/duel/instructions/initializeQueue.js +63 -0
- package/dist/generated/duel/instructions/initializeTenant.d.ts +70 -0
- package/dist/generated/duel/instructions/initializeTenant.js +67 -0
- package/dist/generated/duel/instructions/joinQueue.d.ts +51 -0
- package/dist/generated/duel/instructions/joinQueue.js +56 -0
- package/dist/generated/duel/instructions/processUndelegation.d.ts +43 -0
- package/dist/generated/duel/instructions/processUndelegation.js +49 -0
- package/dist/generated/duel/instructions/setupTicketPermission.d.ts +54 -0
- package/dist/generated/duel/instructions/setupTicketPermission.js +63 -0
- package/dist/generated/duel/programs/duel.d.ts +92 -0
- package/dist/generated/duel/programs/duel.js +146 -0
- package/dist/generated/duel/programs/index.d.ts +8 -0
- package/dist/generated/duel/programs/index.js +9 -0
- package/dist/generated/duel/types/accountType.d.ts +25 -0
- package/dist/generated/duel/types/accountType.js +25 -0
- package/dist/generated/duel/types/index.d.ts +13 -0
- package/dist/generated/duel/types/index.js +14 -0
- package/dist/generated/duel/types/matchEntry.d.ts +23 -0
- package/dist/generated/duel/types/matchEntry.js +18 -0
- package/dist/generated/duel/types/matchFound.d.ts +23 -0
- package/dist/generated/duel/types/matchFound.js +18 -0
- package/dist/generated/duel/types/pendingMatch.d.ts +21 -0
- package/dist/generated/duel/types/pendingMatch.js +18 -0
- package/dist/generated/duel/types/queueEntry.d.ts +19 -0
- package/dist/generated/duel/types/queueEntry.js +18 -0
- package/dist/generated/duel/types/ticketStatus.d.ts +40 -0
- package/dist/generated/duel/types/ticketStatus.js +25 -0
- package/dist/generated/rps-game/accounts/gameSession.d.ts +40 -0
- package/dist/generated/rps-game/accounts/gameSession.js +45 -0
- package/dist/generated/rps-game/accounts/index.d.ts +9 -0
- package/dist/generated/rps-game/accounts/index.js +10 -0
- package/dist/generated/rps-game/accounts/playerProfile.d.ts +36 -0
- package/dist/generated/rps-game/accounts/playerProfile.js +47 -0
- package/dist/generated/rps-game/errors/index.d.ts +8 -0
- package/dist/generated/rps-game/errors/index.js +9 -0
- package/dist/generated/rps-game/errors/rpsGame.d.ts +25 -0
- package/dist/generated/rps-game/errors/rpsGame.js +29 -0
- package/dist/generated/rps-game/index.d.ts +12 -0
- package/dist/generated/rps-game/index.js +13 -0
- package/dist/generated/rps-game/instructions/closePlayer.d.ts +45 -0
- package/dist/generated/rps-game/instructions/closePlayer.js +56 -0
- package/dist/generated/rps-game/instructions/delegatePda.d.ts +69 -0
- package/dist/generated/rps-game/instructions/delegatePda.js +90 -0
- package/dist/generated/rps-game/instructions/index.d.ts +16 -0
- package/dist/generated/rps-game/instructions/index.js +17 -0
- package/dist/generated/rps-game/instructions/initializePlayer.d.ts +48 -0
- package/dist/generated/rps-game/instructions/initializePlayer.js +63 -0
- package/dist/generated/rps-game/instructions/makeChoice.d.ts +44 -0
- package/dist/generated/rps-game/instructions/makeChoice.js +46 -0
- package/dist/generated/rps-game/instructions/onMatchFound.d.ts +43 -0
- package/dist/generated/rps-game/instructions/onMatchFound.js +45 -0
- package/dist/generated/rps-game/instructions/persistResults.d.ts +43 -0
- package/dist/generated/rps-game/instructions/persistResults.js +50 -0
- package/dist/generated/rps-game/instructions/processUndelegation.d.ts +43 -0
- package/dist/generated/rps-game/instructions/processUndelegation.js +49 -0
- package/dist/generated/rps-game/instructions/startGame.d.ts +54 -0
- package/dist/generated/rps-game/instructions/startGame.js +67 -0
- package/dist/generated/rps-game/instructions/startGameWithTicket.d.ts +57 -0
- package/dist/generated/rps-game/instructions/startGameWithTicket.js +67 -0
- package/dist/generated/rps-game/programs/index.d.ts +8 -0
- package/dist/generated/rps-game/programs/index.js +9 -0
- package/dist/generated/rps-game/programs/rpsGame.d.ts +78 -0
- package/dist/generated/rps-game/programs/rpsGame.js +118 -0
- package/dist/generated/rps-game/types/accountType.d.ts +34 -0
- package/dist/generated/rps-game/types/accountType.js +25 -0
- package/dist/generated/rps-game/types/choice.d.ts +17 -0
- package/dist/generated/rps-game/types/choice.js +25 -0
- package/dist/generated/rps-game/types/gameResult.d.ts +26 -0
- package/dist/generated/rps-game/types/gameResult.js +25 -0
- package/dist/generated/rps-game/types/index.d.ts +10 -0
- package/dist/generated/rps-game/types/index.js +11 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/player.d.ts +25 -46
- package/dist/player.js +81 -140
- package/dist/tee.d.ts +14 -0
- package/dist/tee.js +62 -0
- package/dist/transaction.d.ts +11 -0
- package/dist/transaction.js +50 -0
- package/dist/utils.d.ts +4 -4
- package/dist/utils.js +23 -8
- package/package.json +3 -6
- package/src/admin.ts +151 -161
- package/src/duel.json +66 -7
- package/src/encryption.ts +0 -3
- package/src/generated/duel/accounts/index.ts +11 -0
- package/src/generated/duel/accounts/matchTicket.ts +77 -0
- package/src/generated/duel/accounts/queue.ts +77 -0
- package/src/generated/duel/accounts/tenant.ts +76 -0
- package/src/generated/duel/errors/duel.ts +46 -0
- package/src/generated/duel/errors/index.ts +9 -0
- package/src/generated/duel/index.ts +13 -0
- package/src/generated/duel/instructions/cancelTicket.ts +100 -0
- package/src/generated/duel/instructions/closeTicket.ts +100 -0
- package/src/generated/duel/instructions/commitTickets.ts +84 -0
- package/src/generated/duel/instructions/createTicket.ts +109 -0
- package/src/generated/duel/instructions/delegateQueue.ts +157 -0
- package/src/generated/duel/instructions/delegateTicket.ts +157 -0
- package/src/generated/duel/instructions/flushMatches.ts +76 -0
- package/src/generated/duel/instructions/index.ts +20 -0
- package/src/generated/duel/instructions/initializeQueue.ts +109 -0
- package/src/generated/duel/instructions/initializeTenant.ts +126 -0
- package/src/generated/duel/instructions/joinQueue.ts +106 -0
- package/src/generated/duel/instructions/processUndelegation.ts +86 -0
- package/src/generated/duel/instructions/setupTicketPermission.ts +115 -0
- package/src/generated/duel/programs/duel.ts +108 -0
- package/src/generated/duel/programs/index.ts +9 -0
- package/src/generated/duel/types/accountType.ts +36 -0
- package/src/generated/duel/types/index.ts +14 -0
- package/src/generated/duel/types/matchEntry.ts +25 -0
- package/src/generated/duel/types/matchFound.ts +25 -0
- package/src/generated/duel/types/pendingMatch.ts +25 -0
- package/src/generated/duel/types/queueEntry.ts +25 -0
- package/src/generated/duel/types/ticketStatus.ts +38 -0
- package/src/generated/rps-game/accounts/gameSession.ts +77 -0
- package/src/generated/rps-game/accounts/index.ts +10 -0
- package/src/generated/rps-game/accounts/playerProfile.ts +80 -0
- package/src/generated/rps-game/errors/index.ts +9 -0
- package/src/generated/rps-game/errors/rpsGame.ts +40 -0
- package/src/generated/rps-game/index.ts +13 -0
- package/src/generated/rps-game/instructions/closePlayer.ts +100 -0
- package/src/generated/rps-game/instructions/delegatePda.ts +157 -0
- package/src/generated/rps-game/instructions/index.ts +17 -0
- package/src/generated/rps-game/instructions/initializePlayer.ts +109 -0
- package/src/generated/rps-game/instructions/makeChoice.ts +84 -0
- package/src/generated/rps-game/instructions/onMatchFound.ts +79 -0
- package/src/generated/rps-game/instructions/persistResults.ts +88 -0
- package/src/generated/rps-game/instructions/processUndelegation.ts +86 -0
- package/src/generated/rps-game/instructions/startGame.ts +118 -0
- package/src/generated/rps-game/instructions/startGameWithTicket.ts +121 -0
- package/src/generated/rps-game/programs/index.ts +9 -0
- package/src/generated/rps-game/programs/rpsGame.ts +95 -0
- package/src/generated/rps-game/types/accountType.ts +36 -0
- package/src/generated/rps-game/types/choice.ts +25 -0
- package/src/generated/rps-game/types/gameResult.ts +37 -0
- package/src/generated/rps-game/types/index.ts +11 -0
- package/src/index.ts +2 -1
- package/src/player.ts +129 -192
- package/src/{idl/private_matchmaking.json → rps_game.json} +547 -583
- package/src/tee.ts +79 -0
- package/src/transaction.ts +90 -0
- package/src/utils.ts +35 -20
- package/tsconfig.json +2 -2
- package/dist/client.d.ts +0 -54
- package/dist/client.js +0 -265
- package/dist/duel.json +0 -1207
- package/dist/private_matchmaking.json +0 -534
- package/dist/types.d.ts +0 -635
- package/dist/types.js +0 -2
- package/src/idl/private_matchmaking.ts +0 -1033
- package/src/types.ts +0 -300
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, getAddressDecoder, getAddressEncoder, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder } from '@solana/kit';
|
|
9
|
+
export function getAccountTypeEncoder() {
|
|
10
|
+
return getDiscriminatedUnionEncoder([['PlayerProfile', getStructEncoder([['player', getAddressEncoder()]])], ['GameSession', getStructEncoder([['p1', getAddressEncoder()], ['p2', getAddressEncoder()], ['id', getU64Encoder()]])]]);
|
|
11
|
+
}
|
|
12
|
+
export function getAccountTypeDecoder() {
|
|
13
|
+
return getDiscriminatedUnionDecoder([['PlayerProfile', getStructDecoder([['player', getAddressDecoder()]])], ['GameSession', getStructDecoder([['p1', getAddressDecoder()], ['p2', getAddressDecoder()], ['id', getU64Decoder()]])]]);
|
|
14
|
+
}
|
|
15
|
+
export function getAccountTypeCodec() {
|
|
16
|
+
return combineCodec(getAccountTypeEncoder(), getAccountTypeDecoder());
|
|
17
|
+
}
|
|
18
|
+
export function accountType(kind, data) {
|
|
19
|
+
return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };
|
|
20
|
+
}
|
|
21
|
+
export function isAccountType(kind, value) {
|
|
22
|
+
return value.__kind === kind;
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudFR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL3Jwcy1nYW1lL3R5cGVzL2FjY291bnRUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBcUksTUFBTSxhQUFhLENBQUM7QUFNbFYsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFPLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ2pDLE9BQU8sNEJBQTRCLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMU8sQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDL0IsT0FBTyxZQUFZLENBQUMscUJBQXFCLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUtELE1BQU0sVUFBVSxXQUFXLENBQTRDLElBQU8sRUFBRSxJQUFXO0lBQ3pGLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsRyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBa0MsSUFBTyxFQUFFLEtBQWtCO0lBQ3hGLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDL0IsQ0FBQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY29kZSB3YXMgQVVUT0dFTkVSQVRFRCB1c2luZyB0aGUgQ29kYW1hIGxpYnJhcnkuXG4gKiBQbGVhc2UgRE8gTk9UIEVESVQgVEhJUyBGSUxFLCBpbnN0ZWFkIHVzZSB2aXNpdG9yc1xuICogdG8gYWRkIGZlYXR1cmVzLCB0aGVuIHJlcnVuIENvZGFtYSB0byB1cGRhdGUgaXQuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY29kYW1hLWlkbC9jb2RhbWFcbiAqL1xuXG5pbXBvcnQgeyBjb21iaW5lQ29kZWMsIGdldEFkZHJlc3NEZWNvZGVyLCBnZXRBZGRyZXNzRW5jb2RlciwgZ2V0RGlzY3JpbWluYXRlZFVuaW9uRGVjb2RlciwgZ2V0RGlzY3JpbWluYXRlZFVuaW9uRW5jb2RlciwgZ2V0U3RydWN0RGVjb2RlciwgZ2V0U3RydWN0RW5jb2RlciwgZ2V0VTY0RGVjb2RlciwgZ2V0VTY0RW5jb2RlciwgdHlwZSBBZGRyZXNzLCB0eXBlIENvZGVjLCB0eXBlIERlY29kZXIsIHR5cGUgRW5jb2RlciwgdHlwZSBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50LCB0eXBlIEdldERpc2NyaW1pbmF0ZWRVbmlvblZhcmlhbnRDb250ZW50IH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuXG5leHBvcnQgdHlwZSBBY2NvdW50VHlwZSA9IHsgX19raW5kOiBcIlBsYXllclByb2ZpbGVcIiwgcGxheWVyOiBBZGRyZXNzOyAgfSB8IHsgX19raW5kOiBcIkdhbWVTZXNzaW9uXCIsIHAxOiBBZGRyZXNzOyBwMjogQWRkcmVzczsgaWQ6IGJpZ2ludDsgIH07XG5cbmV4cG9ydCB0eXBlIEFjY291bnRUeXBlQXJncyA9IHsgX19raW5kOiBcIlBsYXllclByb2ZpbGVcIiwgcGxheWVyOiBBZGRyZXNzOyAgfSB8IHsgX19raW5kOiBcIkdhbWVTZXNzaW9uXCIsIHAxOiBBZGRyZXNzOyBwMjogQWRkcmVzczsgaWQ6IG51bWJlciB8IGJpZ2ludDsgIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2NvdW50VHlwZUVuY29kZXIoKTogRW5jb2RlcjxBY2NvdW50VHlwZUFyZ3M+IHtcbiAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRlZFVuaW9uRW5jb2RlcihbWydQbGF5ZXJQcm9maWxlJywgZ2V0U3RydWN0RW5jb2RlcihbWydwbGF5ZXInLCBnZXRBZGRyZXNzRW5jb2RlcigpXV0pXSwgWydHYW1lU2Vzc2lvbicsIGdldFN0cnVjdEVuY29kZXIoW1sncDEnLCBnZXRBZGRyZXNzRW5jb2RlcigpXSwgWydwMicsIGdldEFkZHJlc3NFbmNvZGVyKCldLCBbJ2lkJywgZ2V0VTY0RW5jb2RlcigpXV0pXV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjb3VudFR5cGVEZWNvZGVyKCk6IERlY29kZXI8QWNjb3VudFR5cGU+IHtcbiAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRlZFVuaW9uRGVjb2RlcihbWydQbGF5ZXJQcm9maWxlJywgZ2V0U3RydWN0RGVjb2RlcihbWydwbGF5ZXInLCBnZXRBZGRyZXNzRGVjb2RlcigpXV0pXSwgWydHYW1lU2Vzc2lvbicsIGdldFN0cnVjdERlY29kZXIoW1sncDEnLCBnZXRBZGRyZXNzRGVjb2RlcigpXSwgWydwMicsIGdldEFkZHJlc3NEZWNvZGVyKCldLCBbJ2lkJywgZ2V0VTY0RGVjb2RlcigpXV0pXV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjb3VudFR5cGVDb2RlYygpOiBDb2RlYzxBY2NvdW50VHlwZUFyZ3MsIEFjY291bnRUeXBlPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVDb2RlYyhnZXRBY2NvdW50VHlwZUVuY29kZXIoKSwgZ2V0QWNjb3VudFR5cGVEZWNvZGVyKCkpO1xufVxuXG4vLyBEYXRhIEVudW0gSGVscGVycy5cbmV4cG9ydCBmdW5jdGlvbiBhY2NvdW50VHlwZShraW5kOiAnUGxheWVyUHJvZmlsZScsIGRhdGE6IEdldERpc2NyaW1pbmF0ZWRVbmlvblZhcmlhbnRDb250ZW50PEFjY291bnRUeXBlQXJncywgJ19fa2luZCcsICdQbGF5ZXJQcm9maWxlJz4pOiBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50PEFjY291bnRUeXBlQXJncywgJ19fa2luZCcsICdQbGF5ZXJQcm9maWxlJz47XG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudFR5cGUoa2luZDogJ0dhbWVTZXNzaW9uJywgZGF0YTogR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudENvbnRlbnQ8QWNjb3VudFR5cGVBcmdzLCAnX19raW5kJywgJ0dhbWVTZXNzaW9uJz4pOiBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50PEFjY291bnRUeXBlQXJncywgJ19fa2luZCcsICdHYW1lU2Vzc2lvbic+O1xuZXhwb3J0IGZ1bmN0aW9uIGFjY291bnRUeXBlPEsgZXh0ZW5kcyBBY2NvdW50VHlwZUFyZ3NbJ19fa2luZCddLCBEYXRhPihraW5kOiBLLCBkYXRhPzogRGF0YSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKSA/IHsgX19raW5kOiBraW5kLCBmaWVsZHM6IGRhdGEgfSA6IHsgX19raW5kOiBraW5kLCAuLi4oZGF0YSA/PyB7fSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWNjb3VudFR5cGU8SyBleHRlbmRzIEFjY291bnRUeXBlWydfX2tpbmQnXT4oa2luZDogSywgdmFsdWU6IEFjY291bnRUeXBlKTogdmFsdWUgaXMgQWNjb3VudFR5cGUgJiB7IF9fa2luZDogSyB9IHtcbiAgcmV0dXJuIHZhbHVlLl9fa2luZCA9PT0ga2luZDtcbn07XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder } from '@solana/kit';
|
|
9
|
+
export declare enum Choice {
|
|
10
|
+
Rock = 0,
|
|
11
|
+
Paper = 1,
|
|
12
|
+
Scissors = 2
|
|
13
|
+
}
|
|
14
|
+
export type ChoiceArgs = Choice;
|
|
15
|
+
export declare function getChoiceEncoder(): FixedSizeEncoder<ChoiceArgs>;
|
|
16
|
+
export declare function getChoiceDecoder(): FixedSizeDecoder<Choice>;
|
|
17
|
+
export declare function getChoiceCodec(): FixedSizeCodec<ChoiceArgs, Choice>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, getEnumDecoder, getEnumEncoder } from '@solana/kit';
|
|
9
|
+
export var Choice;
|
|
10
|
+
(function (Choice) {
|
|
11
|
+
Choice[Choice["Rock"] = 0] = "Rock";
|
|
12
|
+
Choice[Choice["Paper"] = 1] = "Paper";
|
|
13
|
+
Choice[Choice["Scissors"] = 2] = "Scissors";
|
|
14
|
+
})(Choice || (Choice = {}));
|
|
15
|
+
;
|
|
16
|
+
export function getChoiceEncoder() {
|
|
17
|
+
return getEnumEncoder(Choice);
|
|
18
|
+
}
|
|
19
|
+
export function getChoiceDecoder() {
|
|
20
|
+
return getEnumDecoder(Choice);
|
|
21
|
+
}
|
|
22
|
+
export function getChoiceCodec() {
|
|
23
|
+
return combineCodec(getChoiceEncoder(), getChoiceDecoder());
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9ycHMtZ2FtZS90eXBlcy9jaG9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFxRSxNQUFNLGFBQWEsQ0FBQztBQUU5SSxNQUFNLENBQU4sSUFBWSxNQUFnQztBQUE1QyxXQUFZLE1BQU07SUFBRyxtQ0FBSSxDQUFBO0lBQUUscUNBQUssQ0FBQTtJQUFFLDJDQUFRLENBQUE7QUFBQyxDQUFDLEVBQWhDLE1BQU0sS0FBTixNQUFNLFFBQTBCO0FBQUEsQ0FBQztBQUk3QyxNQUFNLFVBQVUsZ0JBQWdCO0lBQzVCLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzVCLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYztJQUMxQixPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBnZXRFbnVtRGVjb2RlciwgZ2V0RW51bUVuY29kZXIsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyIH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuXG5leHBvcnQgZW51bSBDaG9pY2UgeyBSb2NrLCBQYXBlciwgU2Npc3NvcnMgfTtcblxuZXhwb3J0IHR5cGUgQ2hvaWNlQXJncyA9IENob2ljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENob2ljZUVuY29kZXIoKTogRml4ZWRTaXplRW5jb2RlcjxDaG9pY2VBcmdzPiB7XG4gICAgcmV0dXJuIGdldEVudW1FbmNvZGVyKENob2ljZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaG9pY2VEZWNvZGVyKCk6IEZpeGVkU2l6ZURlY29kZXI8Q2hvaWNlPiB7XG4gICAgcmV0dXJuIGdldEVudW1EZWNvZGVyKENob2ljZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaG9pY2VDb2RlYygpOiBGaXhlZFNpemVDb2RlYzxDaG9pY2VBcmdzLCBDaG9pY2U+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldENob2ljZUVuY29kZXIoKSwgZ2V0Q2hvaWNlRGVjb2RlcigpKTtcbn0iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type Address, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent } from '@solana/kit';
|
|
9
|
+
export type GameResult = {
|
|
10
|
+
__kind: "Winner";
|
|
11
|
+
fields: readonly [Address];
|
|
12
|
+
} | {
|
|
13
|
+
__kind: "Tie";
|
|
14
|
+
} | {
|
|
15
|
+
__kind: "None";
|
|
16
|
+
};
|
|
17
|
+
export type GameResultArgs = GameResult;
|
|
18
|
+
export declare function getGameResultEncoder(): Encoder<GameResultArgs>;
|
|
19
|
+
export declare function getGameResultDecoder(): Decoder<GameResult>;
|
|
20
|
+
export declare function getGameResultCodec(): Codec<GameResultArgs, GameResult>;
|
|
21
|
+
export declare function gameResult(kind: 'Winner', data: GetDiscriminatedUnionVariantContent<GameResultArgs, '__kind', 'Winner'>['fields']): GetDiscriminatedUnionVariant<GameResultArgs, '__kind', 'Winner'>;
|
|
22
|
+
export declare function gameResult(kind: 'Tie'): GetDiscriminatedUnionVariant<GameResultArgs, '__kind', 'Tie'>;
|
|
23
|
+
export declare function gameResult(kind: 'None'): GetDiscriminatedUnionVariant<GameResultArgs, '__kind', 'None'>;
|
|
24
|
+
export declare function isGameResult<K extends GameResult['__kind']>(kind: K, value: GameResult): value is GameResult & {
|
|
25
|
+
__kind: K;
|
|
26
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, getAddressDecoder, getAddressEncoder, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getUnitDecoder, getUnitEncoder } from '@solana/kit';
|
|
9
|
+
export function getGameResultEncoder() {
|
|
10
|
+
return getDiscriminatedUnionEncoder([['Winner', getStructEncoder([['fields', getTupleEncoder([getAddressEncoder()])]])], ['Tie', getUnitEncoder()], ['None', getUnitEncoder()]]);
|
|
11
|
+
}
|
|
12
|
+
export function getGameResultDecoder() {
|
|
13
|
+
return getDiscriminatedUnionDecoder([['Winner', getStructDecoder([['fields', getTupleDecoder([getAddressDecoder()])]])], ['Tie', getUnitDecoder()], ['None', getUnitDecoder()]]);
|
|
14
|
+
}
|
|
15
|
+
export function getGameResultCodec() {
|
|
16
|
+
return combineCodec(getGameResultEncoder(), getGameResultDecoder());
|
|
17
|
+
}
|
|
18
|
+
export function gameResult(kind, data) {
|
|
19
|
+
return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };
|
|
20
|
+
}
|
|
21
|
+
export function isGameResult(kind, value) {
|
|
22
|
+
return value.__kind === kind;
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZVJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvcnBzLWdhbWUvdHlwZXMvZ2FtZVJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBcUksTUFBTSxhQUFhLENBQUM7QUFNdFgsTUFBTSxVQUFVLG9CQUFvQjtJQUNoQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckwsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0I7SUFDaEMsT0FBTyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JMLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCO0lBQzlCLE9BQU8sWUFBWSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFNRCxNQUFNLFVBQVUsVUFBVSxDQUEyQyxJQUFPLEVBQUUsSUFBVztJQUN2RixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDbEcsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQWlDLElBQU8sRUFBRSxLQUFpQjtJQUNyRixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQy9CLENBQUM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBnZXRBZGRyZXNzRGVjb2RlciwgZ2V0QWRkcmVzc0VuY29kZXIsIGdldERpc2NyaW1pbmF0ZWRVbmlvbkRlY29kZXIsIGdldERpc2NyaW1pbmF0ZWRVbmlvbkVuY29kZXIsIGdldFN0cnVjdERlY29kZXIsIGdldFN0cnVjdEVuY29kZXIsIGdldFR1cGxlRGVjb2RlciwgZ2V0VHVwbGVFbmNvZGVyLCBnZXRVbml0RGVjb2RlciwgZ2V0VW5pdEVuY29kZXIsIHR5cGUgQWRkcmVzcywgdHlwZSBDb2RlYywgdHlwZSBEZWNvZGVyLCB0eXBlIEVuY29kZXIsIHR5cGUgR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudCwgdHlwZSBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50Q29udGVudCB9IGZyb20gJ0Bzb2xhbmEva2l0JztcblxuZXhwb3J0IHR5cGUgR2FtZVJlc3VsdCA9IHsgX19raW5kOiBcIldpbm5lclwiLCBmaWVsZHM6IHJlYWRvbmx5IFtBZGRyZXNzXTsgIH0gfCB7IF9fa2luZDogXCJUaWVcIiB9IHwgeyBfX2tpbmQ6IFwiTm9uZVwiIH07XG5cbmV4cG9ydCB0eXBlIEdhbWVSZXN1bHRBcmdzID0gR2FtZVJlc3VsdDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdhbWVSZXN1bHRFbmNvZGVyKCk6IEVuY29kZXI8R2FtZVJlc3VsdEFyZ3M+IHtcbiAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRlZFVuaW9uRW5jb2RlcihbWydXaW5uZXInLCBnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2ZpZWxkcycsIGdldFR1cGxlRW5jb2RlcihbZ2V0QWRkcmVzc0VuY29kZXIoKV0pXV0pXSwgWydUaWUnLCBnZXRVbml0RW5jb2RlcigpXSwgWydOb25lJywgZ2V0VW5pdEVuY29kZXIoKV1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdhbWVSZXN1bHREZWNvZGVyKCk6IERlY29kZXI8R2FtZVJlc3VsdD4ge1xuICAgIHJldHVybiBnZXREaXNjcmltaW5hdGVkVW5pb25EZWNvZGVyKFtbJ1dpbm5lcicsIGdldFN0cnVjdERlY29kZXIoW1snZmllbGRzJywgZ2V0VHVwbGVEZWNvZGVyKFtnZXRBZGRyZXNzRGVjb2RlcigpXSldXSldLCBbJ1RpZScsIGdldFVuaXREZWNvZGVyKCldLCBbJ05vbmUnLCBnZXRVbml0RGVjb2RlcigpXV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2FtZVJlc3VsdENvZGVjKCk6IENvZGVjPEdhbWVSZXN1bHRBcmdzLCBHYW1lUmVzdWx0PiB7XG4gICAgcmV0dXJuIGNvbWJpbmVDb2RlYyhnZXRHYW1lUmVzdWx0RW5jb2RlcigpLCBnZXRHYW1lUmVzdWx0RGVjb2RlcigpKTtcbn1cblxuLy8gRGF0YSBFbnVtIEhlbHBlcnMuXG5leHBvcnQgZnVuY3Rpb24gZ2FtZVJlc3VsdChraW5kOiAnV2lubmVyJywgZGF0YTogR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudENvbnRlbnQ8R2FtZVJlc3VsdEFyZ3MsICdfX2tpbmQnLCAnV2lubmVyJz5bJ2ZpZWxkcyddKTogR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudDxHYW1lUmVzdWx0QXJncywgJ19fa2luZCcsICdXaW5uZXInPjtcbmV4cG9ydCBmdW5jdGlvbiBnYW1lUmVzdWx0KGtpbmQ6ICdUaWUnKTogR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudDxHYW1lUmVzdWx0QXJncywgJ19fa2luZCcsICdUaWUnPjtcbmV4cG9ydCBmdW5jdGlvbiBnYW1lUmVzdWx0KGtpbmQ6ICdOb25lJyk6IEdldERpc2NyaW1pbmF0ZWRVbmlvblZhcmlhbnQ8R2FtZVJlc3VsdEFyZ3MsICdfX2tpbmQnLCAnTm9uZSc+O1xuZXhwb3J0IGZ1bmN0aW9uIGdhbWVSZXN1bHQ8SyBleHRlbmRzIEdhbWVSZXN1bHRBcmdzWydfX2tpbmQnXSwgRGF0YT4oa2luZDogSywgZGF0YT86IERhdGEpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkgPyB7IF9fa2luZDoga2luZCwgZmllbGRzOiBkYXRhIH0gOiB7IF9fa2luZDoga2luZCwgLi4uKGRhdGEgPz8ge30pIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dhbWVSZXN1bHQ8SyBleHRlbmRzIEdhbWVSZXN1bHRbJ19fa2luZCddPihraW5kOiBLLCB2YWx1ZTogR2FtZVJlc3VsdCk6IHZhbHVlIGlzIEdhbWVSZXN1bHQgJiB7IF9fa2luZDogSyB9IHtcbiAgcmV0dXJuIHZhbHVlLl9fa2luZCA9PT0ga2luZDtcbn07XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
export * from './accountType';
|
|
9
|
+
export * from './choice';
|
|
10
|
+
export * from './gameResult';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
export * from './accountType';
|
|
9
|
+
export * from './choice';
|
|
10
|
+
export * from './gameResult';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL3Jwcy1nYW1lL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hY2NvdW50VHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2Nob2ljZSc7XG5leHBvcnQgKiBmcm9tICcuL2dhbWVSZXN1bHQnOyJdfQ==
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from "./admin.js";
|
|
2
2
|
export * from "./player.js";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./tee.js";
|
|
4
4
|
export * as utils from "./utils.js";
|
|
5
|
-
|
|
5
|
+
export { fetchMaybeTenant, fetchTenant, fetchMaybeQueue, fetchQueue } from "./generated/duel/index.js";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUM7QUFDekIsT0FBTyxLQUFLLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hZG1pbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxheWVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZWUuanNcIjtcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzLmpzXCI7XG5leHBvcnQgeyBmZXRjaE1heWJlVGVuYW50LCBmZXRjaFRlbmFudCwgZmV0Y2hNYXliZVF1ZXVlLCBmZXRjaFF1ZXVlIH0gZnJvbSBcIi4vZ2VuZXJhdGVkL2R1ZWwvaW5kZXguanNcIjtcbiJdfQ==
|
package/dist/player.d.ts
CHANGED
|
@@ -1,51 +1,30 @@
|
|
|
1
|
-
import
|
|
2
|
-
import * as web3 from "@solana/web3.js";
|
|
3
|
-
import type { Duel } from "./types.js";
|
|
1
|
+
import { type Address, type TransactionSigner, type Rpc, type SolanaRpcApi } from "@solana/kit";
|
|
4
2
|
export declare class MatchmakingPlayer {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
delegateTicket(player: web3.PublicKey, tenant: web3.PublicKey, validator?: web3.PublicKey, confirmOptions?: web3.ConfirmOptions, signers?: web3.Keypair[]): Promise<web3.TransactionSignature>;
|
|
24
|
-
/**
|
|
25
|
-
* Join Queue (TEE Aware) - now requires ticket
|
|
26
|
-
*/
|
|
27
|
-
joinQueue(queue: web3.PublicKey, tenant: web3.PublicKey, playerData: web3.PublicKey, confirmOptions?: web3.ConfirmOptions, signers?: web3.Keypair[]): Promise<web3.TransactionSignature>;
|
|
28
|
-
/**
|
|
29
|
-
* Cancel search, marks ticket as Cancelled (runs in TEE)
|
|
30
|
-
*/
|
|
31
|
-
cancelTicket(tenant: web3.PublicKey, confirmOptions?: web3.ConfirmOptions, signers?: web3.Keypair[]): Promise<web3.TransactionSignature>;
|
|
32
|
-
/**
|
|
33
|
-
* Close ticket and reclaim rent (L1, after match consumed or cancelled)
|
|
34
|
-
*/
|
|
35
|
-
closeTicket(tenant: web3.PublicKey, confirmOptions?: web3.ConfirmOptions, signers?: web3.Keypair[]): Promise<web3.TransactionSignature>;
|
|
36
|
-
/**
|
|
37
|
-
* Wait for match by subscribing to ticket PDA changes on L1.
|
|
38
|
-
* Returns match info when ticket status changes to Matched.
|
|
39
|
-
*/
|
|
40
|
-
waitForMatch(ticketPda: web3.PublicKey, connection: web3.Connection, timeoutMs?: number): Promise<{
|
|
41
|
-
opponent: web3.PublicKey;
|
|
42
|
-
matchId: anchor.BN;
|
|
3
|
+
rpc: Rpc<SolanaRpcApi>;
|
|
4
|
+
signer: TransactionSigner;
|
|
5
|
+
programId: Address;
|
|
6
|
+
constructor(rpc: Rpc<SolanaRpcApi>, signer: TransactionSigner, programId?: Address);
|
|
7
|
+
getTicketPda(player: Address, tenant: Address): Promise<Address>;
|
|
8
|
+
getTicket(ticketPda: Address): Promise<import("@solana/accounts").MaybeAccount<import("./generated/duel/index.js").MatchTicket, string>>;
|
|
9
|
+
createTicket(tenant: Address): Promise<string>;
|
|
10
|
+
delegateTicket(player: Address, tenant: Address, validator?: Address): Promise<string>;
|
|
11
|
+
joinQueue(queue: Address, tenant: Address, playerData: Address, callbackProgram?: Address): Promise<string>;
|
|
12
|
+
cancelTicket(tenant: Address): Promise<string>;
|
|
13
|
+
closeTicket(tenant: Address): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Poll L1 for ticket status.
|
|
16
|
+
* Returns match info when status becomes Matched.
|
|
17
|
+
*/
|
|
18
|
+
pollForMatch(ticketPda: Address, maxAttempts?: number, pollInterval?: number, signal?: AbortSignal): Promise<{
|
|
19
|
+
opponent: Address;
|
|
20
|
+
matchId: bigint;
|
|
43
21
|
} | null>;
|
|
44
22
|
/**
|
|
45
|
-
*
|
|
23
|
+
* High-level: full matchmaking TEE entry flow.
|
|
24
|
+
* Creates ticket on L1, delegates it to TEE, waits for activation, then joins the queue.
|
|
25
|
+
* Use individual methods (createTicket, delegateTicket, joinQueue) as escape hatches if needed.
|
|
46
26
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
} | null>;
|
|
27
|
+
enterQueue(tenant: Address, queue: Address, playerData: Address, teeRpc: Rpc<SolanaRpcApi>, teeUrlWithToken: string, validator?: Address, callbackProgram?: Address): Promise<Address>;
|
|
28
|
+
/** Create a new MatchmakingPlayer pointing at a TEE RPC endpoint. */
|
|
29
|
+
withRpc(teeUrl: string): MatchmakingPlayer;
|
|
51
30
|
}
|
package/dist/player.js
CHANGED
|
@@ -1,166 +1,107 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { createSolanaRpc, } from "@solana/kit";
|
|
2
|
+
import { getCreateTicketInstructionAsync, getDelegateTicketInstructionAsync, getJoinQueueInstructionAsync, getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, fetchMaybeMatchTicket, accountType, } from "./generated/duel/index.js";
|
|
3
|
+
import { sendInstruction } from "./transaction.js";
|
|
4
|
+
import { waitUntilPermissionActive } from "./tee.js";
|
|
4
5
|
import * as utils from "./utils.js";
|
|
6
|
+
const DUEL_PROGRAM_ID = "EdZzUwKd1X2ZWjxLPpz1cpEzMF7RUZC43Pq64v1VcK5X";
|
|
5
7
|
export class MatchmakingPlayer {
|
|
6
|
-
constructor(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this.
|
|
10
|
-
this.provider = provider;
|
|
8
|
+
constructor(rpc, signer, programId = DUEL_PROGRAM_ID) {
|
|
9
|
+
this.rpc = rpc;
|
|
10
|
+
this.signer = signer;
|
|
11
|
+
this.programId = programId;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
*/
|
|
15
|
-
getTicketPda(player, tenant) {
|
|
16
|
-
return utils.deriveTicketPda(this.program.programId, player, tenant);
|
|
13
|
+
async getTicketPda(player, tenant) {
|
|
14
|
+
return utils.deriveTicketPda(this.programId, player, tenant);
|
|
17
15
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Fetch MatchTicket account data
|
|
20
|
-
*/
|
|
21
16
|
async getTicket(ticketPda) {
|
|
22
|
-
return
|
|
17
|
+
return fetchMaybeMatchTicket(this.rpc, ticketPda);
|
|
23
18
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return
|
|
30
|
-
.createTicket()
|
|
31
|
-
.accountsPartial({
|
|
32
|
-
ticket: ticketPda,
|
|
33
|
-
tenant: tenant,
|
|
34
|
-
player: this.provider.publicKey,
|
|
35
|
-
})
|
|
36
|
-
.signers(signers)
|
|
37
|
-
.rpc(confirmOptions);
|
|
19
|
+
async createTicket(tenant) {
|
|
20
|
+
const ix = await getCreateTicketInstructionAsync({
|
|
21
|
+
player: this.signer,
|
|
22
|
+
tenant,
|
|
23
|
+
}, { programAddress: this.programId });
|
|
24
|
+
return sendInstruction(this.rpc, ix, this.signer);
|
|
38
25
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
async delegateTicket(player, tenant, validator = new web3.PublicKey("FnE6VJT5QNZdedZPnCoLsARgBwoE6DeJNjBs2H1gySXA"), confirmOptions, signers = []) {
|
|
43
|
-
const ticketPda = this.getTicketPda(player, tenant);
|
|
44
|
-
return await this.program.methods
|
|
45
|
-
.delegateTicket({ ticket: { player, tenant } })
|
|
46
|
-
.accounts({
|
|
26
|
+
async delegateTicket(player, tenant, validator) {
|
|
27
|
+
const ticketPda = await this.getTicketPda(player, tenant);
|
|
28
|
+
const ix = await getDelegateTicketInstructionAsync({
|
|
47
29
|
pda: ticketPda,
|
|
48
|
-
payer: this.
|
|
49
|
-
validator
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Join Queue (TEE Aware) - now requires ticket
|
|
56
|
-
*/
|
|
57
|
-
async joinQueue(queue, tenant, playerData, confirmOptions, signers = []) {
|
|
58
|
-
const ticketPda = this.getTicketPda(this.provider.publicKey, tenant);
|
|
59
|
-
return await this.program.methods
|
|
60
|
-
.joinQueue()
|
|
61
|
-
.accountsPartial({
|
|
62
|
-
queue: queue,
|
|
63
|
-
tenant: tenant,
|
|
64
|
-
playerData: playerData,
|
|
65
|
-
playerTicket: ticketPda,
|
|
66
|
-
signer: this.provider.publicKey,
|
|
67
|
-
})
|
|
68
|
-
.signers(signers)
|
|
69
|
-
.rpc(confirmOptions);
|
|
30
|
+
payer: this.signer,
|
|
31
|
+
validator,
|
|
32
|
+
accountType: accountType("Ticket", { player, tenant }),
|
|
33
|
+
}, { programAddress: this.programId });
|
|
34
|
+
return sendInstruction(this.rpc, ix, this.signer);
|
|
70
35
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.signers(signers)
|
|
84
|
-
.rpc(confirmOptions);
|
|
36
|
+
async joinQueue(queue, tenant, playerData, callbackProgram) {
|
|
37
|
+
const ix = await getJoinQueueInstructionAsync({
|
|
38
|
+
queue,
|
|
39
|
+
tenant,
|
|
40
|
+
playerData,
|
|
41
|
+
signer: this.signer,
|
|
42
|
+
}, { programAddress: this.programId });
|
|
43
|
+
const ixFinal = callbackProgram
|
|
44
|
+
? { ...ix, accounts: [...ix.accounts, { address: callbackProgram, role: 0 }] }
|
|
45
|
+
: ix;
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
return sendInstruction(this.rpc, ixFinal, this.signer);
|
|
85
48
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return
|
|
92
|
-
.closeTicket()
|
|
93
|
-
.accountsPartial({
|
|
94
|
-
ticket: ticketPda,
|
|
95
|
-
tenant: tenant,
|
|
96
|
-
player: this.provider.publicKey,
|
|
97
|
-
})
|
|
98
|
-
.signers(signers)
|
|
99
|
-
.rpc(confirmOptions);
|
|
49
|
+
async cancelTicket(tenant) {
|
|
50
|
+
const ix = await getCancelTicketInstructionAsync({
|
|
51
|
+
player: this.signer,
|
|
52
|
+
tenant,
|
|
53
|
+
}, { programAddress: this.programId });
|
|
54
|
+
return sendInstruction(this.rpc, ix, this.signer);
|
|
100
55
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return
|
|
107
|
-
let subscriptionId = null;
|
|
108
|
-
let timeoutId = null;
|
|
109
|
-
const cleanup = () => {
|
|
110
|
-
if (timeoutId)
|
|
111
|
-
clearTimeout(timeoutId);
|
|
112
|
-
if (subscriptionId !== null) {
|
|
113
|
-
connection.removeAccountChangeListener(subscriptionId);
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
// Set timeout
|
|
117
|
-
timeoutId = setTimeout(() => {
|
|
118
|
-
cleanup();
|
|
119
|
-
resolve(null);
|
|
120
|
-
}, timeoutMs);
|
|
121
|
-
// Subscribe to account changes on L1
|
|
122
|
-
subscriptionId = connection.onAccountChange(ticketPda, (accountInfo) => {
|
|
123
|
-
try {
|
|
124
|
-
const decoded = this.program.coder.accounts.decode("matchTicket", accountInfo.data);
|
|
125
|
-
if (decoded.status.matched) {
|
|
126
|
-
cleanup();
|
|
127
|
-
resolve({
|
|
128
|
-
opponent: decoded.status.matched.opponent,
|
|
129
|
-
matchId: decoded.status.matched.matchId,
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
catch (e) {
|
|
134
|
-
// Ignore decode errors (account may be in transition)
|
|
135
|
-
}
|
|
136
|
-
}, "confirmed");
|
|
137
|
-
});
|
|
56
|
+
async closeTicket(tenant) {
|
|
57
|
+
const ix = await getCloseTicketInstructionAsync({
|
|
58
|
+
player: this.signer,
|
|
59
|
+
tenant,
|
|
60
|
+
}, { programAddress: this.programId });
|
|
61
|
+
return sendInstruction(this.rpc, ix, this.signer);
|
|
138
62
|
}
|
|
139
63
|
/**
|
|
140
|
-
* Poll L1 for ticket status
|
|
64
|
+
* Poll L1 for ticket status.
|
|
65
|
+
* Returns match info when status becomes Matched.
|
|
141
66
|
*/
|
|
142
|
-
async pollForMatch(ticketPda,
|
|
67
|
+
async pollForMatch(ticketPda, maxAttempts = 60, pollInterval = 2000, signal) {
|
|
143
68
|
for (let i = 0; i < maxAttempts; i++) {
|
|
144
69
|
if (signal?.aborted)
|
|
145
70
|
return null;
|
|
146
|
-
await new Promise(
|
|
71
|
+
await new Promise((r) => setTimeout(r, pollInterval));
|
|
147
72
|
try {
|
|
148
|
-
const
|
|
149
|
-
if (!
|
|
73
|
+
const maybeTicket = await fetchMaybeMatchTicket(this.rpc, ticketPda);
|
|
74
|
+
if (!maybeTicket.exists)
|
|
150
75
|
continue;
|
|
151
|
-
const
|
|
152
|
-
if (
|
|
153
|
-
return {
|
|
154
|
-
opponent: decoded.status.matched.opponent,
|
|
155
|
-
matchId: decoded.status.matched.matchId,
|
|
156
|
-
};
|
|
76
|
+
const status = maybeTicket.data.status;
|
|
77
|
+
if (status.__kind === "Matched") {
|
|
78
|
+
return { opponent: status.opponent, matchId: status.matchId };
|
|
157
79
|
}
|
|
158
80
|
}
|
|
159
|
-
catch
|
|
160
|
-
//
|
|
81
|
+
catch {
|
|
82
|
+
// Ignore decode errors during transition
|
|
161
83
|
}
|
|
162
84
|
}
|
|
163
85
|
return null;
|
|
164
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* High-level: full matchmaking TEE entry flow.
|
|
89
|
+
* Creates ticket on L1, delegates it to TEE, waits for activation, then joins the queue.
|
|
90
|
+
* Use individual methods (createTicket, delegateTicket, joinQueue) as escape hatches if needed.
|
|
91
|
+
*/
|
|
92
|
+
async enterQueue(tenant, queue, playerData, teeRpc, teeUrlWithToken, validator, callbackProgram) {
|
|
93
|
+
const player = this.signer.address;
|
|
94
|
+
const ticketPda = await this.getTicketPda(player, tenant);
|
|
95
|
+
await this.createTicket(tenant);
|
|
96
|
+
await this.delegateTicket(player, tenant, validator);
|
|
97
|
+
await waitUntilPermissionActive(teeUrlWithToken, ticketPda);
|
|
98
|
+
const teeClient = new MatchmakingPlayer(teeRpc, this.signer, this.programId);
|
|
99
|
+
await teeClient.joinQueue(queue, tenant, playerData, callbackProgram);
|
|
100
|
+
return ticketPda;
|
|
101
|
+
}
|
|
102
|
+
/** Create a new MatchmakingPlayer pointing at a TEE RPC endpoint. */
|
|
103
|
+
withRpc(teeUrl) {
|
|
104
|
+
return new MatchmakingPlayer(createSolanaRpc(teeUrl), this.signer, this.programId);
|
|
105
|
+
}
|
|
165
106
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxJQUFJLE1BQU0saUJBQWlCLENBQUM7QUFFeEMsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBWSxRQUErQixFQUFFLFNBQWtDO1FBQzdFLE1BQU0sT0FBTyxHQUFHLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakYsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQXNCLEVBQUUsTUFBc0I7UUFDekQsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQXlCO1FBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUss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LFFBQVEsQ0FBQyxNQUFNLENBQ2hELGFBQWEsRUFDYixXQUFXLENBQUMsSUFBSSxDQUNqQixDQUFDO2dCQUVGLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDM0IsT0FBTzt3QkFDTCxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUTt3QkFDekMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU87cUJBQ3hDLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLGdEQUFnRDtZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYW5jaG9yIGZyb20gXCJAY29yYWwteHl6L2FuY2hvclwiO1xuaW1wb3J0ICogYXMgd2ViMyBmcm9tIFwiQHNvbGFuYS93ZWIzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IER1ZWwgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IElETCBmcm9tIFwiLi9kdWVsLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfTtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBNYXRjaG1ha2luZ1BsYXllciB7XG4gIHB1YmxpYyBwcm9ncmFtOiBhbmNob3IuUHJvZ3JhbTxEdWVsPjtcbiAgcHVibGljIHByb3ZpZGVyOiBhbmNob3IuQW5jaG9yUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IocHJvdmlkZXI6IGFuY2hvci5BbmNob3JQcm92aWRlciwgcHJvZ3JhbUlkOiB3ZWIzLlB1YmxpY0tleSB8IHN0cmluZykge1xuICAgIGNvbnN0IGFkZHJlc3MgPSB0eXBlb2YgcHJvZ3JhbUlkID09PSBcInN0cmluZ1wiID8gcHJvZ3JhbUlkIDogcHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgY29uc3QgaWRsID0geyAuLi5JREwsIGFkZHJlc3MgfTtcbiAgICB0aGlzLnByb2dyYW0gPSBuZXcgYW5jaG9yLlByb2dyYW0oaWRsIGFzIGFueSwgcHJvdmlkZXIpO1xuICAgIHRoaXMucHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgTWF0Y2hUaWNrZXQgUERBXG4gICAqL1xuICBnZXRUaWNrZXRQZGEocGxheWVyOiB3ZWIzLlB1YmxpY0tleSwgdGVuYW50OiB3ZWIzLlB1YmxpY0tleSk6IHdlYjMuUHVibGljS2V5IHtcbiAgICByZXR1cm4gdXRpbHMuZGVyaXZlVGlja2V0UGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQsIHBsYXllciwgdGVuYW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBNYXRjaFRpY2tldCBhY2NvdW50IGRhdGFcbiAgICovXG4gIGFzeW5jIGdldFRpY2tldCh0aWNrZXRQZGE6IHdlYjMuUHVibGljS2V5KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLmFjY291bnQubWF0Y2hUaWNrZXQuZmV0Y2godGlja2V0UGRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgTWF0Y2hUaWNrZXQgUERBIG9uIEwxXG4gICAqL1xuICBhc3luYyBjcmVhdGVUaWNrZXQoXG4gICAgdGVuYW50OiB3ZWIzLlB1YmxpY0tleSxcbiAgICBjb25maXJtT3B0aW9ucz86IHdlYjMuQ29uZmlybU9wdGlvbnMsXG4gICAgc2lnbmVyczogd2ViMy5LZXlwYWlyW10gPSBbXVxuICApOiBQcm9taXNlPHdlYjMuVHJhbnNhY3Rpb25TaWduYXR1cmU+IHtcbiAgICBjb25zdCB0aWNrZXRQZGEgPSB0aGlzLmdldFRpY2tldFBkYSh0aGlzLnByb3ZpZGVyLnB1YmxpY0tleSwgdGVuYW50KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLm1ldGhvZHNcbiAgICAgIC5jcmVhdGVUaWNrZXQoKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIHRpY2tldDogdGlja2V0UGRhLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudCxcbiAgICAgICAgcGxheWVyOiB0aGlzLnByb3ZpZGVyLnB1YmxpY0tleSxcbiAgICAgIH0pXG4gICAgICAuc2lnbmVycyhzaWduZXJzKVxuICAgICAgLnJwYyhjb25maXJtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgdGlja2V0IGludG8gVEVFIChiZWNvbWVzIGludmlzaWJsZSBvbiBMMSlcbiAgICovXG4gIGFzeW5jIGRlbGVnYXRlVGlja2V0KFxuICAgIHBsYXllcjogd2ViMy5QdWJsaWNLZXksXG4gICAgdGVuYW50OiB3ZWIzLlB1YmxpY0tleSxcbiAgICB2YWxpZGF0b3I6IHdlYjMuUHVibGljS2V5ID0gbmV3IHdlYjMuUHVibGljS2V5KFwiRm5FNlZKVDVRTlpkZWRaUG5Db0xzQVJnQndvRTZEZUpOakJzMkgxZ3lTWEFcIiksXG4gICAgY29uZmlybU9wdGlvbnM/OiB3ZWIzLkNvbmZpcm1PcHRpb25zLFxuICAgIHNpZ25lcnM6IHdlYjMuS2V5cGFpcltdID0gW11cbiAgKTogUHJvbWlzZTx3ZWIzLlRyYW5zYWN0aW9uU2lnbmF0dXJlPiB7XG4gICAgY29uc3QgdGlja2V0UGRhID0gdGhpcy5nZXRUaWNrZXRQZGEocGxheWVyLCB0ZW5hbnQpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLmRlbGVnYXRlVGlja2V0KHsgdGlja2V0OiB7IHBsYXllciwgdGVuYW50IH0gfSBhcyBhbnkpXG4gICAgICAuYWNjb3VudHMoe1xuICAgICAgICBwZGE6IHRpY2tldFBkYSxcbiAgICAgICAgcGF5ZXI6IHRoaXMucHJvdmlkZXIucHVibGljS2V5LFxuICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvcixcbiAgICAgIH0gYXMgYW55KVxuICAgICAgLnNpZ25lcnMoc2lnbmVycylcbiAgICAgIC5ycGMoY29uZmlybU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEpvaW4gUXVldWUgKFRFRSBBd2FyZSkgLSBub3cgcmVxdWlyZXMgdGlja2V0XG4gICAqL1xuICBhc3luYyBqb2luUXVldWUoXG4gICAgcXVldWU6IHdlYjMuUHVibGljS2V5LFxuICAgIHRlbmFudDogd2ViMy5QdWJsaWNLZXksXG4gICAgcGxheWVyRGF0YTogd2ViMy5QdWJsaWNLZXksXG4gICAgY29uZmlybU9wdGlvbnM/OiB3ZWIzLkNvbmZpcm1PcHRpb25zLFxuICAgIHNpZ25lcnM6IHdlYjMuS2V5cGFpcltdID0gW11cbiAgKTogUHJvbWlzZTx3ZWIzLlRyYW5zYWN0aW9uU2lnbmF0dXJlPiB7XG4gICAgY29uc3QgdGlja2V0UGRhID0gdGhpcy5nZXRUaWNrZXRQZGEodGhpcy5wcm92aWRlci5wdWJsaWNLZXksIHRlbmFudCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAuam9pblF1ZXVlKClcbiAgICAgIC5hY2NvdW50c1BhcnRpYWwoe1xuICAgICAgICBxdWV1ZTogcXVldWUsXG4gICAgICAgIHRlbmFudDogdGVuYW50LFxuICAgICAgICBwbGF5ZXJEYXRhOiBwbGF5ZXJEYXRhLFxuICAgICAgICBwbGF5ZXJUaWNrZXQ6IHRpY2tldFBkYSxcbiAgICAgICAgc2lnbmVyOiB0aGlzLnByb3ZpZGVyLnB1YmxpY0tleSxcbiAgICAgIH0pXG4gICAgICAuc2lnbmVycyhzaWduZXJzKVxuICAgICAgLnJwYyhjb25maXJtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIHNlYXJjaCwgbWFya3MgdGlja2V0IGFzIENhbmNlbGxlZCAocnVucyBpbiBURUUpXG4gICAqL1xuICBhc3luYyBjYW5jZWxUaWNrZXQoXG4gICAgdGVuYW50OiB3ZWIzLlB1YmxpY0tleSxcbiAgICBjb25maXJtT3B0aW9ucz86IHdlYjMuQ29uZmlybU9wdGlvbnMsXG4gICAgc2lnbmVyczogd2ViMy5LZXlwYWlyW10gPSBbXVxuICApOiBQcm9taXNlPHdlYjMuVHJhbnNhY3Rpb25TaWduYXR1cmU+IHtcbiAgICBjb25zdCB0aWNrZXRQZGEgPSB0aGlzLmdldFRpY2tldFBkYSh0aGlzLnByb3ZpZGVyLnB1YmxpY0tleSwgdGVuYW50KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLm1ldGhvZHNcbiAgICAgIC5jYW5jZWxUaWNrZXQoKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIHRpY2tldDogdGlja2V0UGRhLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudCxcbiAgICAgICAgcGxheWVyOiB0aGlzLnByb3ZpZGVyLnB1YmxpY0tleSxcbiAgICAgIH0pXG4gICAgICAuc2lnbmVycyhzaWduZXJzKVxuICAgICAgLnJwYyhjb25maXJtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGlja2V0IGFuZCByZWNsYWltIHJlbnQgKEwxLCBhZnRlciBtYXRjaCBjb25zdW1lZCBvciBjYW5jZWxsZWQpXG4gICAqL1xuICBhc3luYyBjbG9zZVRpY2tldChcbiAgICB0ZW5hbnQ6IHdlYjMuUHVibGljS2V5LFxuICAgIGNvbmZpcm1PcHRpb25zPzogd2ViMy5Db25maXJtT3B0aW9ucyxcbiAgICBzaWduZXJzOiB3ZWIzLktleXBhaXJbXSA9IFtdXG4gICk6IFByb21pc2U8d2ViMy5UcmFuc2FjdGlvblNpZ25hdHVyZT4ge1xuICAgIGNvbnN0IHRpY2tldFBkYSA9IHRoaXMuZ2V0VGlja2V0UGRhKHRoaXMucHJvdmlkZXIucHVibGljS2V5LCB0ZW5hbnQpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLmNsb3NlVGlja2V0KClcbiAgICAgIC5hY2NvdW50c1BhcnRpYWwoe1xuICAgICAgICB0aWNrZXQ6IHRpY2tldFBkYSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnQsXG4gICAgICAgIHBsYXllcjogdGhpcy5wcm92aWRlci5wdWJsaWNLZXksXG4gICAgICB9KVxuICAgICAgLnNpZ25lcnMoc2lnbmVycylcbiAgICAgIC5ycGMoY29uZmlybU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXQgZm9yIG1hdGNoIGJ5IHN1YnNjcmliaW5nIHRvIHRpY2tldCBQREEgY2hhbmdlcyBvbiBMMS5cbiAgICogUmV0dXJucyBtYXRjaCBpbmZvIHdoZW4gdGlja2V0IHN0YXR1cyBjaGFuZ2VzIHRvIE1hdGNoZWQuXG4gICAqL1xuICBhc3luYyB3YWl0Rm9yTWF0Y2goXG4gICAgdGlja2V0UGRhOiB3ZWIzLlB1YmxpY0tleSxcbiAgICBjb25uZWN0aW9uOiB3ZWIzLkNvbm5lY3Rpb24sXG4gICAgdGltZW91dE1zOiBudW1iZXIgPSAxMjAwMDBcbiAgKTogUHJvbWlzZTx7IG9wcG9uZW50OiB3ZWIzLlB1YmxpY0tleTsgbWF0Y2hJZDogYW5jaG9yLkJOIH0gfCBudWxsPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBzdWJzY3JpcHRpb25JZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgdGltZW91dElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBpZiAodGltZW91dElkKSBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbklkICE9PSBudWxsKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5yZW1vdmVBY2NvdW50Q2hhbmdlTGlzdGVuZXIoc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAvLyBTZXQgdGltZW91dFxuICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgIH0sIHRpbWVvdXRNcyk7XG5cbiAgICAgIC8vIFN1YnNjcmliZSB0byBhY2NvdW50IGNoYW5nZXMgb24gTDFcbiAgICAgIHN1YnNjcmlwdGlvbklkID0gY29ubmVjdGlvbi5vbkFjY291bnRDaGFuZ2UoXG4gICAgICAgIHRpY2tldFBkYSxcbiAgICAgICAgKGFjY291bnRJbmZvOiB3ZWIzLkFjY291bnRJbmZvPEJ1ZmZlcj4pID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMucHJvZ3JhbS5jb2Rlci5hY2NvdW50cy5kZWNvZGUoXG4gICAgICAgICAgICAgIFwibWF0Y2hUaWNrZXRcIixcbiAgICAgICAgICAgICAgYWNjb3VudEluZm8uZGF0YVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChkZWNvZGVkLnN0YXR1cy5tYXRjaGVkKSB7XG4gICAgICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgb3Bwb25lbnQ6IGRlY29kZWQuc3RhdHVzLm1hdGNoZWQub3Bwb25lbnQsXG4gICAgICAgICAgICAgICAgbWF0Y2hJZDogZGVjb2RlZC5zdGF0dXMubWF0Y2hlZC5tYXRjaElkLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgZGVjb2RlIGVycm9ycyAoYWNjb3VudCBtYXkgYmUgaW4gdHJhbnNpdGlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiY29uZmlybWVkXCJcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUG9sbCBMMSBmb3IgdGlja2V0IHN0YXR1cyAoZmFsbGJhY2sgZm9yIGVudmlyb25tZW50cyB3aXRob3V0IHdlYnNvY2tldClcbiAgICovXG4gIGFzeW5jIHBvbGxGb3JNYXRjaChcbiAgICB0aWNrZXRQZGE6IHdlYjMuUHVibGljS2V5LFxuICAgIGNvbm5lY3Rpb246IHdlYjMuQ29ubmVjdGlvbixcbiAgICBtYXhBdHRlbXB0czogbnVtYmVyID0gNjAsXG4gICAgcG9sbEludGVydmFsOiBudW1iZXIgPSAyMDAwLFxuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsXG4gICk6IFByb21pc2U8eyBvcHBvbmVudDogd2ViMy5QdWJsaWNLZXk7IG1hdGNoSWQ6IGFuY2hvci5CTiB9IHwgbnVsbD4ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4QXR0ZW1wdHM7IGkrKykge1xuICAgICAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWwpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBjb25uZWN0aW9uLmdldEFjY291bnRJbmZvKHRpY2tldFBkYSk7XG4gICAgICAgIGlmICghYWNjb3VudEluZm8pIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLnByb2dyYW0uY29kZXIuYWNjb3VudHMuZGVjb2RlKFxuICAgICAgICAgIFwibWF0Y2hUaWNrZXRcIixcbiAgICAgICAgICBhY2NvdW50SW5mby5kYXRhXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGRlY29kZWQuc3RhdHVzLm1hdGNoZWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3Bwb25lbnQ6IGRlY29kZWQuc3RhdHVzLm1hdGNoZWQub3Bwb25lbnQsXG4gICAgICAgICAgICBtYXRjaElkOiBkZWNvZGVkLnN0YXR1cy5tYXRjaGVkLm1hdGNoSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBBY2NvdW50IG1heSBub3QgZXhpc3QgeWV0IG9yIGJlIGluIHRyYW5zaXRpb25cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxHQUtoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsV0FBVyxHQUNaLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUVwQyxNQUFNLGVBQWUsR0FBRyw4Q0FBeUQsQ0FBQztBQUVsRixNQUFNLE9BQU8saUJBQWlCO0lBSzVCLFlBQ0UsR0FBc0IsRUFDdEIsTUFBeUIsRUFDekIsWUFBcUIsZUFBZTtRQUVwQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWUsRUFBRSxNQUFlO1FBQ2pELE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFrQjtRQUNoQyxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBZTtRQUNoQyxNQUFNLEVBQUUsR0FBRyxNQUFNLCtCQUErQixDQUFD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QUFNLHlCQUF5QixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFdEUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMsTUFBYztRQUNwQixPQUFPLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZVNvbGFuYVJwYyxcbiAgdHlwZSBBZGRyZXNzLFxuICB0eXBlIFRyYW5zYWN0aW9uU2lnbmVyLFxuICB0eXBlIFJwYyxcbiAgdHlwZSBTb2xhbmFScGNBcGksXG59IGZyb20gXCJAc29sYW5hL2tpdFwiO1xuaW1wb3J0IHtcbiAgZ2V0Q3JlYXRlVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYyxcbiAgZ2V0RGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLFxuICBnZXRKb2luUXVldWVJbnN0cnVjdGlvbkFzeW5jLFxuICBnZXRDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLFxuICBnZXRDbG9zZVRpY2tldEluc3RydWN0aW9uQXN5bmMsXG4gIGZldGNoTWF5YmVNYXRjaFRpY2tldCxcbiAgYWNjb3VudFR5cGUsXG59IGZyb20gXCIuL2dlbmVyYXRlZC9kdWVsL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZW5kSW5zdHJ1Y3Rpb24gfSBmcm9tIFwiLi90cmFuc2FjdGlvbi5qc1wiO1xuaW1wb3J0IHsgd2FpdFVudGlsUGVybWlzc2lvbkFjdGl2ZSB9IGZyb20gXCIuL3RlZS5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuY29uc3QgRFVFTF9QUk9HUkFNX0lEID0gXCJFZFp6VXdLZDFYMlpXanhMUHB6MWNwRXpNRjdSVVpDNDNQcTY0djFWY0s1WFwiIGFzIEFkZHJlc3M7XG5cbmV4cG9ydCBjbGFzcyBNYXRjaG1ha2luZ1BsYXllciB7XG4gIHB1YmxpYyBycGM6IFJwYzxTb2xhbmFScGNBcGk+O1xuICBwdWJsaWMgc2lnbmVyOiBUcmFuc2FjdGlvblNpZ25lcjtcbiAgcHVibGljIHByb2dyYW1JZDogQWRkcmVzcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBycGM6IFJwYzxTb2xhbmFScGNBcGk+LFxuICAgIHNpZ25lcjogVHJhbnNhY3Rpb25TaWduZXIsXG4gICAgcHJvZ3JhbUlkOiBBZGRyZXNzID0gRFVFTF9QUk9HUkFNX0lELFxuICApIHtcbiAgICB0aGlzLnJwYyA9IHJwYztcbiAgICB0aGlzLnNpZ25lciA9IHNpZ25lcjtcbiAgICB0aGlzLnByb2dyYW1JZCA9IHByb2dyYW1JZDtcbiAgfVxuXG4gIGFzeW5jIGdldFRpY2tldFBkYShwbGF5ZXI6IEFkZHJlc3MsIHRlbmFudDogQWRkcmVzcyk6IFByb21pc2U8QWRkcmVzcz4ge1xuICAgIHJldHVybiB1dGlscy5kZXJpdmVUaWNrZXRQZGEodGhpcy5wcm9ncmFtSWQsIHBsYXllciwgdGVuYW50KTtcbiAgfVxuXG4gIGFzeW5jIGdldFRpY2tldCh0aWNrZXRQZGE6IEFkZHJlc3MpIHtcbiAgICByZXR1cm4gZmV0Y2hNYXliZU1hdGNoVGlja2V0KHRoaXMucnBjLCB0aWNrZXRQZGEpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVGlja2V0KHRlbmFudDogQWRkcmVzcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCBnZXRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKHtcbiAgICAgIHBsYXllcjogdGhpcy5zaWduZXIsXG4gICAgICB0ZW5hbnQsXG4gICAgfSwgeyBwcm9ncmFtQWRkcmVzczogdGhpcy5wcm9ncmFtSWQgfSk7XG4gICAgcmV0dXJuIHNlbmRJbnN0cnVjdGlvbih0aGlzLnJwYywgaXgsIHRoaXMuc2lnbmVyKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGVnYXRlVGlja2V0KFxuICAgIHBsYXllcjogQWRkcmVzcyxcbiAgICB0ZW5hbnQ6IEFkZHJlc3MsXG4gICAgdmFsaWRhdG9yPzogQWRkcmVzcyxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB0aWNrZXRQZGEgPSBhd2FpdCB0aGlzLmdldFRpY2tldFBkYShwbGF5ZXIsIHRlbmFudCk7XG4gICAgY29uc3QgaXggPSBhd2FpdCBnZXREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uQXN5bmMoe1xuICAgICAgcGRhOiB0aWNrZXRQZGEsXG4gICAgICBwYXllcjogdGhpcy5zaWduZXIsXG4gICAgICB2YWxpZGF0b3IsXG4gICAgICBhY2NvdW50VHlwZTogYWNjb3VudFR5cGUoXCJUaWNrZXRcIiwgeyBwbGF5ZXIsIHRlbmFudCB9KSxcbiAgICB9LCB7IHByb2dyYW1BZGRyZXNzOiB0aGlzLnByb2dyYW1JZCB9KTtcbiAgICByZXR1cm4gc2VuZEluc3RydWN0aW9uKHRoaXMucnBjLCBpeCwgdGhpcy5zaWduZXIpO1xuICB9XG5cbiAgYXN5bmMgam9pblF1ZXVlKFxuICAgIHF1ZXVlOiBBZGRyZXNzLFxuICAgIHRlbmFudDogQWRkcmVzcyxcbiAgICBwbGF5ZXJEYXRhOiBBZGRyZXNzLFxuICAgIGNhbGxiYWNrUHJvZ3JhbT86IEFkZHJlc3MsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCBnZXRKb2luUXVldWVJbnN0cnVjdGlvbkFzeW5jKHtcbiAgICAgIHF1ZXVlLFxuICAgICAgdGVuYW50LFxuICAgICAgcGxheWVyRGF0YSxcbiAgICAgIHNpZ25lcjogdGhpcy5zaWduZXIsXG4gICAgfSwgeyBwcm9ncmFtQWRkcmVzczogdGhpcy5wcm9ncmFtSWQgfSk7XG4gICAgY29uc3QgaXhGaW5hbCA9IGNhbGxiYWNrUHJvZ3JhbVxuICAgICAgPyB7IC4uLml4LCBhY2NvdW50czogWy4uLml4LmFjY291bnRzLCB7IGFkZHJlc3M6IGNhbGxiYWNrUHJvZ3JhbSwgcm9sZTogMCBhcyBjb25zdCB9XSB9XG4gICAgICA6IGl4O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmV0dXJuIHNlbmRJbnN0cnVjdGlvbih0aGlzLnJwYywgaXhGaW5hbCBhcyBhbnksIHRoaXMuc2lnbmVyKTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbFRpY2tldCh0ZW5hbnQ6IEFkZHJlc3MpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGl4ID0gYXdhaXQgZ2V0Q2FuY2VsVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYyh7XG4gICAgICBwbGF5ZXI6IHRoaXMuc2lnbmVyLFxuICAgICAgdGVuYW50LFxuICAgIH0sIHsgcHJvZ3JhbUFkZHJlc3M6IHRoaXMucHJvZ3JhbUlkIH0pO1xuICAgIHJldHVybiBzZW5kSW5zdHJ1Y3Rpb24odGhpcy5ycGMsIGl4LCB0aGlzLnNpZ25lcik7XG4gIH1cblxuICBhc3luYyBjbG9zZVRpY2tldCh0ZW5hbnQ6IEFkZHJlc3MpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGl4ID0gYXdhaXQgZ2V0Q2xvc2VUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKHtcbiAgICAgIHBsYXllcjogdGhpcy5zaWduZXIsXG4gICAgICB0ZW5hbnQsXG4gICAgfSwgeyBwcm9ncmFtQWRkcmVzczogdGhpcy5wcm9ncmFtSWQgfSk7XG4gICAgcmV0dXJuIHNlbmRJbnN0cnVjdGlvbih0aGlzLnJwYywgaXgsIHRoaXMuc2lnbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb2xsIEwxIGZvciB0aWNrZXQgc3RhdHVzLlxuICAgKiBSZXR1cm5zIG1hdGNoIGluZm8gd2hlbiBzdGF0dXMgYmVjb21lcyBNYXRjaGVkLlxuICAgKi9cbiAgYXN5bmMgcG9sbEZvck1hdGNoKFxuICAgIHRpY2tldFBkYTogQWRkcmVzcyxcbiAgICBtYXhBdHRlbXB0cyA9IDYwLFxuICAgIHBvbGxJbnRlcnZhbCA9IDIwMDAsXG4gICAgc2lnbmFsPzogQWJvcnRTaWduYWwsXG4gICk6IFByb21pc2U8eyBvcHBvbmVudDogQWRkcmVzczsgbWF0Y2hJZDogYmlnaW50IH0gfCBudWxsPiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhBdHRlbXB0czsgaSsrKSB7XG4gICAgICBpZiAoc2lnbmFsPy5hYm9ydGVkKSByZXR1cm4gbnVsbDtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIHBvbGxJbnRlcnZhbCkpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWF5YmVUaWNrZXQgPSBhd2FpdCBmZXRjaE1heWJlTWF0Y2hUaWNrZXQodGhpcy5ycGMsIHRpY2tldFBkYSk7XG4gICAgICAgIGlmICghbWF5YmVUaWNrZXQuZXhpc3RzKSBjb250aW51ZTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gbWF5YmVUaWNrZXQuZGF0YS5zdGF0dXM7XG4gICAgICAgIGlmIChzdGF0dXMuX19raW5kID09PSBcIk1hdGNoZWRcIikge1xuICAgICAgICAgIHJldHVybiB7IG9wcG9uZW50OiBzdGF0dXMub3Bwb25lbnQsIG1hdGNoSWQ6IHN0YXR1cy5tYXRjaElkIH07XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZ25vcmUgZGVjb2RlIGVycm9ycyBkdXJpbmcgdHJhbnNpdGlvblxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWdoLWxldmVsOiBmdWxsIG1hdGNobWFraW5nIFRFRSBlbnRyeSBmbG93LlxuICAgKiBDcmVhdGVzIHRpY2tldCBvbiBMMSwgZGVsZWdhdGVzIGl0IHRvIFRFRSwgd2FpdHMgZm9yIGFjdGl2YXRpb24sIHRoZW4gam9pbnMgdGhlIHF1ZXVlLlxuICAgKiBVc2UgaW5kaXZpZHVhbCBtZXRob2RzIChjcmVhdGVUaWNrZXQsIGRlbGVnYXRlVGlja2V0LCBqb2luUXVldWUpIGFzIGVzY2FwZSBoYXRjaGVzIGlmIG5lZWRlZC5cbiAgICovXG4gIGFzeW5jIGVudGVyUXVldWUoXG4gICAgdGVuYW50OiBBZGRyZXNzLFxuICAgIHF1ZXVlOiBBZGRyZXNzLFxuICAgIHBsYXllckRhdGE6IEFkZHJlc3MsXG4gICAgdGVlUnBjOiBScGM8U29sYW5hUnBjQXBpPixcbiAgICB0ZWVVcmxXaXRoVG9rZW46IHN0cmluZyxcbiAgICB2YWxpZGF0b3I/OiBBZGRyZXNzLFxuICAgIGNhbGxiYWNrUHJvZ3JhbT86IEFkZHJlc3MsXG4gICk6IFByb21pc2U8QWRkcmVzcz4ge1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuc2lnbmVyLmFkZHJlc3MgYXMgQWRkcmVzcztcbiAgICBjb25zdCB0aWNrZXRQZGEgPSBhd2FpdCB0aGlzLmdldFRpY2tldFBkYShwbGF5ZXIsIHRlbmFudCk7XG5cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVRpY2tldCh0ZW5hbnQpO1xuICAgIGF3YWl0IHRoaXMuZGVsZWdhdGVUaWNrZXQocGxheWVyLCB0ZW5hbnQsIHZhbGlkYXRvcik7XG4gICAgYXdhaXQgd2FpdFVudGlsUGVybWlzc2lvbkFjdGl2ZSh0ZWVVcmxXaXRoVG9rZW4sIHRpY2tldFBkYSk7XG5cbiAgICBjb25zdCB0ZWVDbGllbnQgPSBuZXcgTWF0Y2htYWtpbmdQbGF5ZXIodGVlUnBjLCB0aGlzLnNpZ25lciwgdGhpcy5wcm9ncmFtSWQpO1xuICAgIGF3YWl0IHRlZUNsaWVudC5qb2luUXVldWUocXVldWUsIHRlbmFudCwgcGxheWVyRGF0YSwgY2FsbGJhY2tQcm9ncmFtKTtcblxuICAgIHJldHVybiB0aWNrZXRQZGE7XG4gIH1cblxuICAvKiogQ3JlYXRlIGEgbmV3IE1hdGNobWFraW5nUGxheWVyIHBvaW50aW5nIGF0IGEgVEVFIFJQQyBlbmRwb2ludC4gKi9cbiAgd2l0aFJwYyh0ZWVVcmw6IHN0cmluZyk6IE1hdGNobWFraW5nUGxheWVyIHtcbiAgICByZXR1cm4gbmV3IE1hdGNobWFraW5nUGxheWVyKGNyZWF0ZVNvbGFuYVJwYyh0ZWVVcmwpLCB0aGlzLnNpZ25lciwgdGhpcy5wcm9ncmFtSWQpO1xuICB9XG59XG4iXX0=
|
package/dist/tee.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Address, type MessagePartialSigner } from "@solana/kit";
|
|
2
|
+
export type { MessagePartialSigner as MessageSigner };
|
|
3
|
+
/**
|
|
4
|
+
* Authenticate with the MagicBlock TEE via challenge-sign flow.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getAuthToken(rpcUrl: string, signer: MessagePartialSigner): Promise<{
|
|
7
|
+
token: string;
|
|
8
|
+
expiresAt: number;
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Poll the TEE /permission endpoint until the given PDA has authorized users,
|
|
12
|
+
* indicating delegation is active. Returns false on timeout (does not throw).
|
|
13
|
+
*/
|
|
14
|
+
export declare function waitUntilPermissionActive(teeUrlWithToken: string, pda: Address, timeoutMs?: number): Promise<boolean>;
|