Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions packages/@magic-ext/smart-account/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "@magic-ext/smart-account",
"version": "0.1.0",
"description": "Magic smart account extension for AA support via Rhinestone",
"author": "Magic <team@magic.link> (https://magic.link/)",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/magiclabs/magic-js"
},
"files": [
"dist"
],
"target": "neutral",
"cdnGlobalName": "MagicSmartAccountExtension",
"main": "./dist/cjs/index.js",
"module": "./dist/es/index.js",
"types": "./dist/types/index.d.ts",
"jsdelivr": "./dist/extension.js",
"exports": {
"import": "./dist/es/index.mjs",
"types": "./dist/types/index.d.ts",
"require": "./dist/cjs/index.js"
},
"externals": {
"include": [
"@magic-sdk/provider",
"@magic-sdk/types"
]
},
"devDependencies": {
"@magic-sdk/provider": "^33.4.0",
"@magic-sdk/types": "^27.4.0"
}
}
3 changes: 3 additions & 0 deletions packages/@magic-ext/smart-account/src/index.cdn.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { SmartAccountExtension } from './index';

export default SmartAccountExtension;
1 change: 1 addition & 0 deletions packages/@magic-ext/smart-account/src/index.native.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './index';
29 changes: 29 additions & 0 deletions packages/@magic-ext/smart-account/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Extension } from '@magic-sdk/provider';
import {
SmartAccountPayloadMethod,
SmartAccountDelegateParams,
SmartAccountDelegateResponse,
SmartAccountSendTransactionParams,
SmartAccountSendTransactionResponse,
} from './types';

export class SmartAccountExtension extends Extension.Internal<'smartAccount'> {
name = 'smartAccount' as const;
config = {};

constructor() {
super();
}

public delegate(params?: SmartAccountDelegateParams): Promise<SmartAccountDelegateResponse> {
const requestPayload = this.utils.createJsonRpcRequestPayload(SmartAccountPayloadMethod.Delegate, [params]);
return this.request<SmartAccountDelegateResponse>(requestPayload);
}

public sendTransaction(params: SmartAccountSendTransactionParams): Promise<SmartAccountSendTransactionResponse> {
const requestPayload = this.utils.createJsonRpcRequestPayload(SmartAccountPayloadMethod.SendTransaction, [params]);
return this.request<SmartAccountSendTransactionResponse>(requestPayload);
}
}

export * from './types';
41 changes: 41 additions & 0 deletions packages/@magic-ext/smart-account/src/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
export enum SmartAccountPayloadMethod {
Delegate = 'magic_smart_account_delegate',
SendTransaction = 'magic_smart_account_send_transaction',
}

export interface SmartAccountDelegateParams {
chainId?: number;
sponsored?: boolean;
}

export interface SmartAccountDelegateResponse {
smartAccountAddress: string;
isDeployed: boolean;
eoaAddress: string;
}

export interface SmartAccountCallInput {
to: string;
data?: string;
value?: string;
}

export interface SmartAccountTokenRequest {
address: string;
amount?: string;
}

export interface SmartAccountSendTransactionParams {
chainId: number;
calls: SmartAccountCallInput[];
sourceChainIds?: number[];
tokenRequests?: SmartAccountTokenRequest[];
sponsored?: boolean;
}

export interface SmartAccountSendTransactionResponse {
intentId: string;
fillHash: string | undefined;
claimHashes: string[];
targetChainId: number;
}
3 changes: 3 additions & 0 deletions packages/@magic-ext/smart-account/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "../../../tsconfig.settings.json"
}
9 changes: 9 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3505,6 +3505,15 @@ __metadata:
languageName: unknown
linkType: soft

"@magic-ext/smart-account@workspace:packages/@magic-ext/smart-account":
version: 0.0.0-use.local
resolution: "@magic-ext/smart-account@workspace:packages/@magic-ext/smart-account"
dependencies:
"@magic-sdk/provider": ^33.4.0
"@magic-sdk/types": ^27.4.0
languageName: unknown
linkType: soft

"@magic-ext/solana@workspace:packages/@magic-ext/solana":
version: 0.0.0-use.local
resolution: "@magic-ext/solana@workspace:packages/@magic-ext/solana"
Expand Down
Loading