From 41051be7115b7749d938ee84d8aba6f1dc5f26ba Mon Sep 17 00:00:00 2001 From: Josh Scanlan <75971516+joshuascan@users.noreply.github.com> Date: Tue, 12 Nov 2024 11:31:12 -0800 Subject: [PATCH 01/14] feat: spire key methods --- packages/@magic-ext/kadena/src/index.ts | 18 ++++++- packages/@magic-ext/kadena/src/types.ts | 66 +++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index 0faaa8536..dcaf96077 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -1,5 +1,11 @@ import { Extension } from '@magic-sdk/commons'; -import { KadenaConfig, KadenaPayloadMethod, KadenaSignTransactionResponse } from './types'; +import { + KadenaConfig, + KadenaGetInfoResponse, + KadenaPayloadMethod, + KadenaSignTransactionResponse, + LoginWithSpireKeyResponse, +} from './types'; export class KadenaExtension extends Extension.Internal<'kadena'> { name = 'kadena' as const; @@ -23,4 +29,14 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { public signTransaction(hash: string): Promise { return this.request(this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransaction, [{ hash }])); } + + public loginWithSpireKey(): Promise { + const requestPayload = this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaLoginWithSpireKey, []); + return this.request(requestPayload); + } + + public getInfo(): Promise { + const requestPayload = this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaGetInfo, []); + return this.request(requestPayload); + } } diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index 27594b0df..d4f8b7211 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -8,6 +8,8 @@ export interface KadenaConfig { export enum KadenaPayloadMethod { KadenaSignTransaction = 'kda_signTransaction', + KadenaLoginWithSpireKey = 'kda_loginWithSpireKey', + KadenaGetInfo = 'kda_getInfo', } export interface KadenaSignTransactionResponse { @@ -15,6 +17,70 @@ export interface KadenaSignTransactionResponse { pubKey: string; } +export interface KadenaGetInfoResponse { + email: string | undefined; + issuer: string; + accountName: string; + publicKey: string; + loginType: 'spire_key' | 'email_otp' | 'sms'; +} + +type Guard = RefKeyset | Keyset; +type RefKeyset = { + keysetref: { + ns: string; + ksn: string; + }; +}; + +type Keyset = { + keys: string[]; + pred: string; +}; + +type Device = { + domain: string; + color: string; + deviceType: string; + ['credential-id']: string; + guard: Keyset; + pendingRegistrationTxs?: ITransactionDescriptor[]; + name?: string; +}; + +type Account = { + alias: string; + accountName: string; + minApprovals: number; + minRegistrationApprovals: number; + balance: string; + devices: Device[]; + guard?: Guard; + keyset?: Keyset; + networkId: string; + chainIds: ChainId[]; + txQueue: QueuedTx[]; + requestedFungibles?: RequestedFungible[]; +}; + +interface ITransactionDescriptor { + requestKey: string; + chainId: ChainId; + networkId: string; +} + +type QueuedTx = ITransactionDescriptor; + +type RequestedFungible = { + fungible: string; + amount: number; + target?: ChainId; +}; + +export type LoginWithSpireKeyResponse = Account & { + isReady: () => Promise; +}; + export type ChainId = | '0' | '1' From 6e73afed2142be9ed0f89e020b8a1e357a2df716 Mon Sep 17 00:00:00 2001 From: Josh Scanlan <75971516+joshuascan@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:54:01 -0800 Subject: [PATCH 02/14] chore: adds tests --- .../kadena/test/spec/kadena.spec.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts index 63018ab1f..3351b116a 100644 --- a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts +++ b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts @@ -27,3 +27,39 @@ test('Sends params as payload', () => { expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaSignTransaction); expect(requestPayload.params).toEqual([{ hash: '0x123' }]); }); + +test('Generate JSON RPC request payload with method `kda_loginWithSpireKey`', () => { + const magic = createMagicSDKWithExtension({}, [ + new KadenaExtension({ + rpcUrl: '', + chainId: '1', + networkId: 'testnet04', + network: 'testnet', + createAccountsOnChain: true, + }), + ]); + magic.kadena.request = jest.fn(); + + magic.kadena.loginWithSpireKey(); + + const requestPayload = magic.kadena.request.mock.calls[0][0]; + expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaLoginWithSpireKey); +}); + +test('Generate JSON RPC request payload with method `kda_getInfo`', () => { + const magic = createMagicSDKWithExtension({}, [ + new KadenaExtension({ + rpcUrl: '', + chainId: '1', + networkId: 'testnet04', + network: 'testnet', + createAccountsOnChain: true, + }), + ]); + magic.kadena.request = jest.fn(); + + magic.kadena.getInfo(); + + const requestPayload = magic.kadena.request.mock.calls[0][0]; + expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaGetInfo); +}); From 2f3ac2d6973cb436459f56cbbaeb70a90057146c Mon Sep 17 00:00:00 2001 From: Josh Scanlan <75971516+joshuascan@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:30:03 -0800 Subject: [PATCH 03/14] chore: updates types --- packages/@magic-ext/kadena/src/index.ts | 5 +++-- packages/@magic-ext/kadena/src/types.ts | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index dcaf96077..687017773 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -1,5 +1,6 @@ import { Extension } from '@magic-sdk/commons'; import { + IUnsignedCommand, KadenaConfig, KadenaGetInfoResponse, KadenaPayloadMethod, @@ -26,8 +27,8 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { }; } - public signTransaction(hash: string): Promise { - return this.request(this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransaction, [{ hash }])); + public signTransaction(tx: string | IUnsignedCommand): Promise { + return this.request(this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransaction, [{ tx }])); } public loginWithSpireKey(): Promise { diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index d4f8b7211..fce395d91 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -12,11 +12,34 @@ export enum KadenaPayloadMethod { KadenaGetInfo = 'kda_getInfo', } -export interface KadenaSignTransactionResponse { +export type KadenaSignTransactionResponse = ISignatureWithPublicKey | SignedTransactions; + +export interface ISignatureWithPublicKey { + sig: string; + pubKey: string; +} + +interface Sig { sig: string; pubKey: string; } +export interface IUnsignedCommand { + hash: string; + cmd: string; + sigs: [undefined]; +} + +interface ICommand { + hash: string; + cmd: string; + sigs: Sig[]; +} + +export interface SignedTransactions { + transactions: (IUnsignedCommand | ICommand)[]; +} + export interface KadenaGetInfoResponse { email: string | undefined; issuer: string; From 5a47b4fe0dbebd71b4698978ceb1b9a674d900f5 Mon Sep 17 00:00:00 2001 From: Josh Scanlan <75971516+joshuascan@users.noreply.github.com> Date: Thu, 21 Nov 2024 16:07:22 -0800 Subject: [PATCH 04/14] chore: fix test --- packages/@magic-ext/kadena/test/spec/kadena.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts index 3351b116a..9080e8e85 100644 --- a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts +++ b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts @@ -25,7 +25,7 @@ test('Sends params as payload', () => { const requestPayload = magic.kadena.request.mock.calls[0][0]; expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaSignTransaction); - expect(requestPayload.params).toEqual([{ hash: '0x123' }]); + expect(requestPayload.params).toEqual([{ tx: '0x123' }]); }); test('Generate JSON RPC request payload with method `kda_loginWithSpireKey`', () => { From a565e3cfdce4792640ec80dbca0599a744c89730 Mon Sep 17 00:00:00 2001 From: Hunter Cote <34493689+hcote@users.noreply.github.com> Date: Fri, 22 Nov 2024 12:57:37 -0500 Subject: [PATCH 05/14] update (#839) * update * tests --- packages/@magic-ext/kadena/src/index.ts | 16 ++++- packages/@magic-ext/kadena/src/types.ts | 61 +++++++++---------- .../kadena/test/spec/kadena.spec.ts | 29 ++++++++- 3 files changed, 70 insertions(+), 36 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index 687017773..1735c0592 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -4,8 +4,9 @@ import { KadenaConfig, KadenaGetInfoResponse, KadenaPayloadMethod, - KadenaSignTransactionResponse, LoginWithSpireKeyResponse, + SignTransactionResponse, + SignTransactionWithSpireKeyResponse, } from './types'; export class KadenaExtension extends Extension.Internal<'kadena'> { @@ -27,8 +28,17 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { }; } - public signTransaction(tx: string | IUnsignedCommand): Promise { - return this.request(this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransaction, [{ tx }])); + public signTransaction(hash: string): Promise { + return this.request(this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransaction, [{ hash }])); + } + + public async signTransactionWithSpireKey( + transaction: IUnsignedCommand, + ): Promise { + const signedTransaction = await this.request( + this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransactionWithSpireKey, [{ transaction }]), + ); + return signedTransaction; } public loginWithSpireKey(): Promise { diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index fce395d91..9315c5c00 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -7,19 +7,13 @@ export interface KadenaConfig { } export enum KadenaPayloadMethod { - KadenaSignTransaction = 'kda_signTransaction', KadenaLoginWithSpireKey = 'kda_loginWithSpireKey', KadenaGetInfo = 'kda_getInfo', + KadenaSignTransaction = 'kda_signTransaction', + KadenaSignTransactionWithSpireKey = 'kda_signTransactionWithSpireKey', } -export type KadenaSignTransactionResponse = ISignatureWithPublicKey | SignedTransactions; - -export interface ISignatureWithPublicKey { - sig: string; - pubKey: string; -} - -interface Sig { +export interface SignTransactionResponse { sig: string; pubKey: string; } @@ -30,25 +24,32 @@ export interface IUnsignedCommand { sigs: [undefined]; } -interface ICommand { +export interface Sig { + sig: string; + pubKey?: string; +} + +export interface ICommand { hash: string; cmd: string; sigs: Sig[]; } -export interface SignedTransactions { +export interface SignTransactionWithSpireKeyResponse { transactions: (IUnsignedCommand | ICommand)[]; } export interface KadenaGetInfoResponse { - email: string | undefined; - issuer: string; accountName: string; publicKey: string; - loginType: 'spire_key' | 'email_otp' | 'sms'; + loginType: string; + isMfaEnabled: boolean; + email?: string; + phoneNumber?: string; } type Guard = RefKeyset | Keyset; + type RefKeyset = { keysetref: { ns: string; @@ -71,21 +72,6 @@ type Device = { name?: string; }; -type Account = { - alias: string; - accountName: string; - minApprovals: number; - minRegistrationApprovals: number; - balance: string; - devices: Device[]; - guard?: Guard; - keyset?: Keyset; - networkId: string; - chainIds: ChainId[]; - txQueue: QueuedTx[]; - requestedFungibles?: RequestedFungible[]; -}; - interface ITransactionDescriptor { requestKey: string; chainId: ChainId; @@ -100,10 +86,23 @@ type RequestedFungible = { target?: ChainId; }; -export type LoginWithSpireKeyResponse = Account & { - isReady: () => Promise; +type Account = { + alias: string; + accountName: string; + minApprovals: number; + minRegistrationApprovals: number; + balance: string; + devices: Device[]; + guard?: Guard; + keyset?: Keyset; + networkId: string; + chainIds: ChainId[]; + txQueue: QueuedTx[]; + requestedFungibles?: RequestedFungible[]; }; +export type LoginWithSpireKeyResponse = Account; + export type ChainId = | '0' | '1' diff --git a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts index 9080e8e85..fbb19eb27 100644 --- a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts +++ b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts @@ -7,7 +7,7 @@ beforeEach(() => { browserEnv.restore(); }); -test('Sends params as payload', () => { +test('signTransaction - Sends params as payload', () => { const magic = createMagicSDKWithExtension({}, [ new KadenaExtension({ rpcUrl: '', @@ -25,7 +25,32 @@ test('Sends params as payload', () => { const requestPayload = magic.kadena.request.mock.calls[0][0]; expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaSignTransaction); - expect(requestPayload.params).toEqual([{ tx: '0x123' }]); + expect(requestPayload.params).toEqual([{ hash: '0x123' }]); +}); + +test('signTransactionWithSpireKey - Sends params as payload', () => { + const magic = createMagicSDKWithExtension({}, [ + new KadenaExtension({ + rpcUrl: '', + chainId: '1', + networkId: 'testnet04', + network: 'testnet', + createAccountsOnChain: true, + }), + ]); + magic.kadena.request = jest.fn(); + + const params = { + hash: '0x123', + cmd: '0x456', + sigs: [undefined], + }; + + magic.kadena.signTransactionWithSpireKey(params); + + const requestPayload = magic.kadena.request.mock.calls[0][0]; + expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaSignTransactionWithSpireKey); + expect(requestPayload.params).toEqual([{ transaction: params }]); }); test('Generate JSON RPC request payload with method `kda_loginWithSpireKey`', () => { From d2cda852c8e111ecbb410a1dbd4b719d9f1192e2 Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Fri, 22 Nov 2024 13:13:51 -0500 Subject: [PATCH 06/14] update type --- packages/@magic-ext/kadena/src/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index 9315c5c00..19147e255 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -46,6 +46,7 @@ export interface KadenaGetInfoResponse { isMfaEnabled: boolean; email?: string; phoneNumber?: string; + spireKeyInfo?: Account; } type Guard = RefKeyset | Keyset; From 6ce0fd5dbcc986ab033186c788a644f675c04d18 Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Fri, 22 Nov 2024 13:31:12 -0500 Subject: [PATCH 07/14] update type --- packages/@magic-ext/kadena/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index 19147e255..db0c089af 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -15,7 +15,7 @@ export enum KadenaPayloadMethod { export interface SignTransactionResponse { sig: string; - pubKey: string; + pubKey?: string; } export interface IUnsignedCommand { From f958dd20ba9d4b72bf077f1b564ce246c3f066e3 Mon Sep 17 00:00:00 2001 From: Josh Scanlan <75971516+joshuascan@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:06:59 -0800 Subject: [PATCH 08/14] chore: rename kadena metadata type --- packages/@magic-ext/kadena/src/index.ts | 6 +++--- packages/@magic-ext/kadena/src/types.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index 1735c0592..de7a29df6 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -2,8 +2,8 @@ import { Extension } from '@magic-sdk/commons'; import { IUnsignedCommand, KadenaConfig, - KadenaGetInfoResponse, KadenaPayloadMethod, + KadenaUserMetadata, LoginWithSpireKeyResponse, SignTransactionResponse, SignTransactionWithSpireKeyResponse, @@ -46,8 +46,8 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { return this.request(requestPayload); } - public getInfo(): Promise { + public getInfo(): Promise { const requestPayload = this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaGetInfo, []); - return this.request(requestPayload); + return this.request(requestPayload); } } diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index db0c089af..c8b1292bb 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -39,7 +39,7 @@ export interface SignTransactionWithSpireKeyResponse { transactions: (IUnsignedCommand | ICommand)[]; } -export interface KadenaGetInfoResponse { +export interface KadenaUserMetadata { accountName: string; publicKey: string; loginType: string; From 79a83c5861671f3eb936097ce1873a74530fd88c Mon Sep 17 00:00:00 2001 From: Josh Scanlan <75971516+joshuascan@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:02:19 -0800 Subject: [PATCH 09/14] chore: updates user info name --- packages/@magic-ext/kadena/src/index.ts | 4 ++-- packages/@magic-ext/kadena/src/types.ts | 2 +- packages/@magic-ext/kadena/test/spec/kadena.spec.ts | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index de7a29df6..617886f97 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -46,8 +46,8 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { return this.request(requestPayload); } - public getInfo(): Promise { - const requestPayload = this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaGetInfo, []); + public getUserInfo(): Promise { + const requestPayload = this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaGetUserInfo, []); return this.request(requestPayload); } } diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index c8b1292bb..84e0691e0 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -8,7 +8,7 @@ export interface KadenaConfig { export enum KadenaPayloadMethod { KadenaLoginWithSpireKey = 'kda_loginWithSpireKey', - KadenaGetInfo = 'kda_getInfo', + KadenaGetUserInfo = 'kda_getUserInfo', KadenaSignTransaction = 'kda_signTransaction', KadenaSignTransactionWithSpireKey = 'kda_signTransactionWithSpireKey', } diff --git a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts index fbb19eb27..190c713e0 100644 --- a/packages/@magic-ext/kadena/test/spec/kadena.spec.ts +++ b/packages/@magic-ext/kadena/test/spec/kadena.spec.ts @@ -71,7 +71,7 @@ test('Generate JSON RPC request payload with method `kda_loginWithSpireKey`', () expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaLoginWithSpireKey); }); -test('Generate JSON RPC request payload with method `kda_getInfo`', () => { +test('Generate JSON RPC request payload with method `kda_getUserInfo`', () => { const magic = createMagicSDKWithExtension({}, [ new KadenaExtension({ rpcUrl: '', @@ -83,8 +83,8 @@ test('Generate JSON RPC request payload with method `kda_getInfo`', () => { ]); magic.kadena.request = jest.fn(); - magic.kadena.getInfo(); + magic.kadena.getUserInfo(); const requestPayload = magic.kadena.request.mock.calls[0][0]; - expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaGetInfo); + expect(requestPayload.method).toBe(KadenaPayloadMethod.KadenaGetUserInfo); }); From d2af7b467abb9453fab5cec7d5f61601037051a9 Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Wed, 4 Dec 2024 16:20:24 -0500 Subject: [PATCH 10/14] fix: update types --- packages/@magic-ext/kadena/src/index.ts | 4 ++-- packages/@magic-ext/kadena/src/types.ts | 28 ++++++++++++++----------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index 617886f97..131cea351 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -1,6 +1,6 @@ import { Extension } from '@magic-sdk/commons'; import { - IUnsignedCommand, + KdaUnsignedCommand, KadenaConfig, KadenaPayloadMethod, KadenaUserMetadata, @@ -33,7 +33,7 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { } public async signTransactionWithSpireKey( - transaction: IUnsignedCommand, + transaction: KdaUnsignedCommand, ): Promise { const signedTransaction = await this.request( this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransactionWithSpireKey, [{ transaction }]), diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index 84e0691e0..c0dce4d8e 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -18,25 +18,29 @@ export interface SignTransactionResponse { pubKey?: string; } -export interface IUnsignedCommand { - hash: string; +export interface KdaUnsignedCommand { cmd: string; - sigs: [undefined]; -} - -export interface Sig { - sig: string; - pubKey?: string; + hash: string; + sigs: Array< + | string + | { + pubKey: string; + sig?: string; + } + | undefined + >; } - -export interface ICommand { +export interface KdaSignedCommand { hash: string; cmd: string; - sigs: Sig[]; + sigs: { + sig: string; + pubKey?: string; + }[]; } export interface SignTransactionWithSpireKeyResponse { - transactions: (IUnsignedCommand | ICommand)[]; + transactions: (KdaUnsignedCommand | KdaSignedCommand)[]; } export interface KadenaUserMetadata { From 53b750d55933cd74bb6af25e4f5e9748a0d9b0f3 Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Wed, 4 Dec 2024 16:30:43 -0500 Subject: [PATCH 11/14] fix: update type --- packages/@magic-ext/kadena/src/types.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index c0dce4d8e..c9123d56f 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -22,7 +22,10 @@ export interface KdaUnsignedCommand { cmd: string; hash: string; sigs: Array< - | string + | { + sig: string; + pubKey?: string; + } | { pubKey: string; sig?: string; From 5d37664e12df949f6ff0a1e64969077149f23e26 Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Thu, 5 Dec 2024 12:54:18 -0500 Subject: [PATCH 12/14] update types --- packages/@magic-ext/kadena/src/index.ts | 18 ++++++++---------- packages/@magic-ext/kadena/src/types.ts | 12 ++++++------ 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index 131cea351..3536dfeb9 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -1,12 +1,12 @@ import { Extension } from '@magic-sdk/commons'; import { - KdaUnsignedCommand, + UnsignedCommand, KadenaConfig, KadenaPayloadMethod, KadenaUserMetadata, - LoginWithSpireKeyResponse, - SignTransactionResponse, - SignTransactionWithSpireKeyResponse, + SpireKeyAccount, + SignatureWithPublicKey, + SignedTransactions, } from './types'; export class KadenaExtension extends Extension.Internal<'kadena'> { @@ -28,22 +28,20 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { }; } - public signTransaction(hash: string): Promise { + public signTransaction(hash: string): Promise { return this.request(this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransaction, [{ hash }])); } - public async signTransactionWithSpireKey( - transaction: KdaUnsignedCommand, - ): Promise { + public async signTransactionWithSpireKey(transaction: UnsignedCommand): Promise { const signedTransaction = await this.request( this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaSignTransactionWithSpireKey, [{ transaction }]), ); return signedTransaction; } - public loginWithSpireKey(): Promise { + public loginWithSpireKey(): Promise { const requestPayload = this.utils.createJsonRpcRequestPayload(KadenaPayloadMethod.KadenaLoginWithSpireKey, []); - return this.request(requestPayload); + return this.request(requestPayload); } public getUserInfo(): Promise { diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index c9123d56f..9fbb36f25 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -13,12 +13,12 @@ export enum KadenaPayloadMethod { KadenaSignTransactionWithSpireKey = 'kda_signTransactionWithSpireKey', } -export interface SignTransactionResponse { +export interface SignatureWithPublicKey { sig: string; pubKey?: string; } -export interface KdaUnsignedCommand { +export interface UnsignedCommand { cmd: string; hash: string; sigs: Array< @@ -33,7 +33,7 @@ export interface KdaUnsignedCommand { | undefined >; } -export interface KdaSignedCommand { +export interface SignedCommand { hash: string; cmd: string; sigs: { @@ -42,8 +42,8 @@ export interface KdaSignedCommand { }[]; } -export interface SignTransactionWithSpireKeyResponse { - transactions: (KdaUnsignedCommand | KdaSignedCommand)[]; +export interface SignedTransactions { + transactions: (UnsignedCommand | SignedCommand)[]; } export interface KadenaUserMetadata { @@ -109,7 +109,7 @@ type Account = { requestedFungibles?: RequestedFungible[]; }; -export type LoginWithSpireKeyResponse = Account; +export type SpireKeyAccount = Account; export type ChainId = | '0' From db0e92d8aef53bebe88a42b757b86515bcc3ce8f Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Thu, 5 Dec 2024 12:56:50 -0500 Subject: [PATCH 13/14] update yarn.lock --- yarn.lock | 102 +++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/yarn.lock b/yarn.lock index c38671188..26868afc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2075,7 +2075,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/algorand@workspace:packages/@magic-ext/algorand" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2084,8 +2084,8 @@ __metadata: resolution: "@magic-ext/aptos@workspace:packages/@magic-ext/aptos" dependencies: "@aptos-labs/wallet-adapter-core": ^2.2.0 - "@magic-sdk/commons": ^24.18.0 - "@magic-sdk/provider": ^28.18.0 + "@magic-sdk/commons": ^24.18.1 + "@magic-sdk/provider": ^28.18.1 aptos: ^1.8.5 peerDependencies: "@aptos-labs/wallet-adapter-core": ^2.2.0 @@ -2097,7 +2097,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/avalanche@workspace:packages/@magic-ext/avalanche" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2105,7 +2105,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/bitcoin@workspace:packages/@magic-ext/bitcoin" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2113,7 +2113,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/conflux@workspace:packages/@magic-ext/conflux" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2121,7 +2121,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/cosmos@workspace:packages/@magic-ext/cosmos" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2129,7 +2129,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/ed25519@workspace:packages/@magic-ext/ed25519" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2137,7 +2137,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/farcaster@workspace:packages/@magic-ext/farcaster" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2145,7 +2145,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/flow@workspace:packages/@magic-ext/flow" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 "@onflow/fcl": ^1.4.1 "@onflow/types": ^1.1.0 peerDependencies: @@ -2158,8 +2158,8 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/gdkms@workspace:packages/@magic-ext/gdkms" dependencies: - "@magic-sdk/commons": ^24.18.0 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/commons": ^24.18.1 + "@magic-sdk/types": ^24.16.1 "@peculiar/webcrypto": ^1.4.3 languageName: unknown linkType: soft @@ -2168,7 +2168,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/harmony@workspace:packages/@magic-ext/harmony" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2186,7 +2186,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/icon@workspace:packages/@magic-ext/icon" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2194,7 +2194,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/kadena@workspace:packages/@magic-ext/kadena" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2202,7 +2202,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/near@workspace:packages/@magic-ext/near" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2210,17 +2210,17 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/oauth2@workspace:packages/@magic-ext/oauth2" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 languageName: unknown linkType: soft -"@magic-ext/oauth@^22.18.0, @magic-ext/oauth@workspace:packages/@magic-ext/oauth": +"@magic-ext/oauth@^22.18.1, @magic-ext/oauth@workspace:packages/@magic-ext/oauth": version: 0.0.0-use.local resolution: "@magic-ext/oauth@workspace:packages/@magic-ext/oauth" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 languageName: unknown @@ -2230,7 +2230,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/oidc@workspace:packages/@magic-ext/oidc" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2238,7 +2238,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/polkadot@workspace:packages/@magic-ext/polkadot" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2246,8 +2246,8 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/react-native-bare-oauth@workspace:packages/@magic-ext/react-native-bare-oauth" dependencies: - "@magic-sdk/react-native-bare": ^29.19.0 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/react-native-bare": ^29.19.1 + "@magic-sdk/types": ^24.16.1 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 react-native-device-info: ^10.3.0 @@ -2262,7 +2262,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/react-native-expo-oauth@workspace:packages/@magic-ext/react-native-expo-oauth" dependencies: - "@magic-sdk/react-native-expo": ^29.19.0 + "@magic-sdk/react-native-expo": ^29.19.1 "@magic-sdk/types": ^10.0.0 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 @@ -2277,7 +2277,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/solana@workspace:packages/@magic-ext/solana" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 "@solana/web3.js": ^1.87.2 peerDependencies: "@solana/web3.js": ^1.87.2 @@ -2288,7 +2288,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/sui@workspace:packages/@magic-ext/sui" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2296,7 +2296,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/taquito@workspace:packages/@magic-ext/taquito" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2304,7 +2304,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/terra@workspace:packages/@magic-ext/terra" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2312,7 +2312,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/tezos@workspace:packages/@magic-ext/tezos" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2320,7 +2320,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/webauthn@workspace:packages/@magic-ext/webauthn" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft @@ -2328,16 +2328,16 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/zilliqa@workspace:packages/@magic-ext/zilliqa" dependencies: - "@magic-sdk/commons": ^24.18.0 + "@magic-sdk/commons": ^24.18.1 languageName: unknown linkType: soft -"@magic-sdk/commons@^24.18.0, @magic-sdk/commons@workspace:packages/@magic-sdk/commons": +"@magic-sdk/commons@^24.18.1, @magic-sdk/commons@workspace:packages/@magic-sdk/commons": version: 0.0.0-use.local resolution: "@magic-sdk/commons@workspace:packages/@magic-sdk/commons" dependencies: - "@magic-sdk/provider": ^28.18.0 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/provider": ^28.18.1 + "@magic-sdk/types": ^24.16.1 peerDependencies: "@magic-sdk/provider": ">=18.6.0" "@magic-sdk/types": ">=15.8.0" @@ -2361,17 +2361,17 @@ __metadata: "@babel/core": ^7.9.6 "@babel/plugin-proposal-optional-chaining": ^7.9.0 "@babel/runtime": ^7.9.6 - "@magic-ext/oauth": ^22.18.0 - magic-sdk: ^28.19.0 + "@magic-ext/oauth": ^22.18.1 + magic-sdk: ^28.19.1 languageName: unknown linkType: soft -"@magic-sdk/provider@^28.18.0, @magic-sdk/provider@workspace:packages/@magic-sdk/provider": +"@magic-sdk/provider@^28.18.1, @magic-sdk/provider@workspace:packages/@magic-sdk/provider": version: 0.0.0-use.local resolution: "@magic-sdk/provider@workspace:packages/@magic-sdk/provider" dependencies: "@babel/plugin-transform-modules-commonjs": ^7.9.6 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/types": ^24.16.1 "@peculiar/webcrypto": ^1.1.7 eventemitter3: ^4.0.4 localforage: ^1.7.4 @@ -2383,7 +2383,7 @@ __metadata: languageName: unknown linkType: soft -"@magic-sdk/react-native-bare@^29.19.0, @magic-sdk/react-native-bare@workspace:packages/@magic-sdk/react-native-bare": +"@magic-sdk/react-native-bare@^29.19.1, @magic-sdk/react-native-bare@workspace:packages/@magic-sdk/react-native-bare": version: 0.0.0-use.local resolution: "@magic-sdk/react-native-bare@workspace:packages/@magic-sdk/react-native-bare" dependencies: @@ -2391,9 +2391,9 @@ __metadata: "@babel/core": ^7.15.0 "@babel/plugin-transform-flow-strip-types": ^7.14.5 "@babel/runtime": ~7.10.4 - "@magic-sdk/commons": ^24.18.0 - "@magic-sdk/provider": ^28.18.0 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/commons": ^24.18.1 + "@magic-sdk/provider": ^28.18.1 + "@magic-sdk/types": ^24.16.1 "@react-native-async-storage/async-storage": ^1.15.5 "@react-native-community/netinfo": ">11.0.0" "@testing-library/react-native": ^12.4.0 @@ -2424,7 +2424,7 @@ __metadata: languageName: unknown linkType: soft -"@magic-sdk/react-native-expo@^29.19.0, @magic-sdk/react-native-expo@workspace:packages/@magic-sdk/react-native-expo": +"@magic-sdk/react-native-expo@^29.19.1, @magic-sdk/react-native-expo@workspace:packages/@magic-sdk/react-native-expo": version: 0.0.0-use.local resolution: "@magic-sdk/react-native-expo@workspace:packages/@magic-sdk/react-native-expo" dependencies: @@ -2432,9 +2432,9 @@ __metadata: "@babel/core": ^7.15.0 "@babel/plugin-transform-flow-strip-types": ^7.14.5 "@babel/runtime": ~7.10.4 - "@magic-sdk/commons": ^24.18.0 - "@magic-sdk/provider": ^28.18.0 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/commons": ^24.18.1 + "@magic-sdk/provider": ^28.18.1 + "@magic-sdk/types": ^24.16.1 "@react-native-async-storage/async-storage": ^1.15.5 "@react-native-community/netinfo": ">11.0.0" "@testing-library/react-native": ^12.4.0 @@ -2465,7 +2465,7 @@ __metadata: languageName: unknown linkType: soft -"@magic-sdk/types@^24.16.0, @magic-sdk/types@workspace:packages/@magic-sdk/types": +"@magic-sdk/types@^24.16.1, @magic-sdk/types@workspace:packages/@magic-sdk/types": version: 0.0.0-use.local resolution: "@magic-sdk/types@workspace:packages/@magic-sdk/types" languageName: unknown @@ -13272,16 +13272,16 @@ fsevents@^2.3.2: languageName: unknown linkType: soft -"magic-sdk@^28.19.0, magic-sdk@workspace:packages/magic-sdk": +"magic-sdk@^28.19.1, magic-sdk@workspace:packages/magic-sdk": version: 0.0.0-use.local resolution: "magic-sdk@workspace:packages/magic-sdk" dependencies: "@babel/core": ^7.9.6 "@babel/plugin-proposal-optional-chaining": ^7.9.0 "@babel/runtime": ^7.9.6 - "@magic-sdk/commons": ^24.18.0 - "@magic-sdk/provider": ^28.18.0 - "@magic-sdk/types": ^24.16.0 + "@magic-sdk/commons": ^24.18.1 + "@magic-sdk/provider": ^28.18.1 + "@magic-sdk/types": ^24.16.1 localforage: ^1.7.4 localforage-driver-memory: ^1.0.5 languageName: unknown From 7a5c8a4c0af548a04e0c76fb1910ab89ebe6be18 Mon Sep 17 00:00:00 2001 From: Hunter Cote Date: Fri, 6 Dec 2024 09:58:37 -0500 Subject: [PATCH 14/14] remove network config --- packages/@magic-ext/kadena/src/index.ts | 1 - packages/@magic-ext/kadena/src/types.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/@magic-ext/kadena/src/index.ts b/packages/@magic-ext/kadena/src/index.ts index 3536dfeb9..7e56540b6 100644 --- a/packages/@magic-ext/kadena/src/index.ts +++ b/packages/@magic-ext/kadena/src/index.ts @@ -21,7 +21,6 @@ export class KadenaExtension extends Extension.Internal<'kadena'> { rpcUrl: kadenaConfig.rpcUrl, chainId: kadenaConfig.chainId, options: { - network: kadenaConfig.network, networkId: kadenaConfig.networkId, createAccountsOnChain: Boolean(kadenaConfig.createAccountsOnChain), }, diff --git a/packages/@magic-ext/kadena/src/types.ts b/packages/@magic-ext/kadena/src/types.ts index 9fbb36f25..3129eba71 100644 --- a/packages/@magic-ext/kadena/src/types.ts +++ b/packages/@magic-ext/kadena/src/types.ts @@ -1,7 +1,6 @@ export interface KadenaConfig { rpcUrl: string; chainId: ChainId; - network: 'testnet' | 'mainnet'; networkId: string; createAccountsOnChain?: boolean; }