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
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
"private": true,
"packageManager": "pnpm@10.6.2",
"scripts": {
"build": "turbo run build --filter=gridplus-sdk --filter=@gridplus/btc --filter=@gridplus/types",
"build": "turbo run build --filter=gridplus-sdk --filter=@gridplus/asset-core --filter=@gridplus/btc --filter=@gridplus/cosmos --filter=@gridplus/evm --filter=@gridplus/solana --filter=@gridplus/types",
"test": "turbo run test --filter=gridplus-sdk --filter=@gridplus/btc",
"test-unit": "turbo run test-unit --filter=gridplus-sdk --filter=@gridplus/btc",
"lint": "turbo run lint --filter=gridplus-sdk --filter=@gridplus/btc --filter=@gridplus/types",
"lint:fix": "turbo run lint:fix --filter=gridplus-sdk --filter=@gridplus/btc --filter=@gridplus/types",
"typecheck": "turbo run typecheck --filter=gridplus-sdk --filter=@gridplus/btc --filter=@gridplus/types",
"lint": "turbo run lint --filter=gridplus-sdk --filter=@gridplus/asset-core --filter=@gridplus/btc --filter=@gridplus/cosmos --filter=@gridplus/evm --filter=@gridplus/solana --filter=@gridplus/types",
"lint:fix": "turbo run lint:fix --filter=gridplus-sdk --filter=@gridplus/asset-core --filter=@gridplus/btc --filter=@gridplus/cosmos --filter=@gridplus/evm --filter=@gridplus/solana --filter=@gridplus/types",
"typecheck": "turbo run typecheck --filter=gridplus-sdk --filter=@gridplus/asset-core --filter=@gridplus/btc --filter=@gridplus/cosmos --filter=@gridplus/evm --filter=@gridplus/solana --filter=@gridplus/types",
"e2e": "turbo run e2e --filter=gridplus-sdk",
"docs:build": "pnpm --filter gridplus-sdk-docs run build",
"docs:start": "pnpm --filter gridplus-sdk-docs run start"
Expand Down
File renamed without changes.
41 changes: 41 additions & 0 deletions packages/assets/asset-core/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"name": "@gridplus/asset-core",
"version": "0.1.0",
"type": "module",
"description": "Shared asset interface types for GridPlus SDK",
"scripts": {
"build": "tsup",
"lint": "biome check src",
"lint:fix": "biome check --write src",
"typecheck": "tsc --noEmit"
},
"files": [
"dist"
],
"main": "./dist/index.cjs",
"module": "./dist/index.mjs",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"require": "./dist/index.cjs"
},
"./package.json": "./package.json"
},
"types": "./dist/index.d.ts",
"repository": {
"type": "git",
"url": "https://github.com/GridPlus/gridplus-sdk.git",
"directory": "packages/assets/asset-core"
},
"devDependencies": {
"@biomejs/biome": "^1.9.0",
"@types/node": "^24.10.4",
"tsup": "^8.5.0",
"typescript": "^5.9.2"
},
"license": "MIT",
"engines": {
"node": ">=20"
}
}
102 changes: 102 additions & 0 deletions packages/assets/asset-core/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
export type DerivationPath = number[];
export type Address = string;
export type PublicKey = Uint8Array;

export type Signature = {
bytes: Uint8Array;
r?: Uint8Array;
s?: Uint8Array;
v?: number | bigint;
};

export type SignResult = {
signature: Signature;
publicKey?: PublicKey;
signedPayload?: Uint8Array | string;
txHash?: string;
metadata?: Record<string, unknown>;
};

export type Account = {
address: Address;
publicKey?: PublicKey;
path: DerivationPath;
index?: number;
};

export type AssetCapabilities = {
signTransaction: boolean;
signMessage: boolean;
signTypedData: boolean;
signArbitrary: boolean;
getPublicKey: boolean;
getXpub?: boolean;
};

export type GetAddressParams = {
path?: DerivationPath;
accountIndex?: number;
change?: number;
addressIndex?: number;
};

export type GetPublicKeyParams = {
path?: DerivationPath;
accountIndex?: number;
change?: number;
addressIndex?: number;
compressed?: boolean;
};

export type GetAccountsParams = {
startIndex?: number;
count?: number;
includePublicKey?: boolean;
change?: number;
};

export type SignRequest =
| { kind: 'transaction'; payload: unknown; options?: unknown }
| { kind: 'message'; payload: string | Uint8Array; options?: unknown }
| { kind: 'typedData'; payload: unknown; options?: unknown }
| { kind: 'arbitrary'; payload: Uint8Array; options?: unknown };

export type Signer<TSignRequest = SignRequest> = {
getAddress: (path: DerivationPath, options?: unknown) => Promise<Address>;
getPublicKey: (path: DerivationPath, options?: unknown) => Promise<PublicKey>;
sign: (request: TSignRequest) => Promise<SignResult>;
};

export type AssetAdapter<
TSignRequest = SignRequest,
TGetAddressParams = GetAddressParams,
TGetAccountsParams = GetAccountsParams,
TGetPublicKeyParams = GetPublicKeyParams,
TAccount = Account,
> = {
getAddress(params?: TGetAddressParams): Promise<Address>;
getAddresses(params?: TGetAccountsParams): Promise<Address[]>;
getPublicKey(params?: TGetPublicKeyParams): Promise<PublicKey>;
getPublicKeys?(params?: TGetAccountsParams): Promise<PublicKey[]>;
getAccount?(params?: TGetAddressParams): Promise<TAccount>;
getAccounts?(params?: TGetAccountsParams): Promise<TAccount[]>;
sign(request: TSignRequest): Promise<SignResult>;
validateAddress?(address: Address): boolean;
normalizeAddress?(address: Address): Address;
};

export type AssetModule<
TSignRequest = SignRequest,
TAdapter extends AssetAdapter<TSignRequest> = AssetAdapter<TSignRequest>,
TOptions = unknown,
TSigner extends Signer<TSignRequest> = Signer<TSignRequest>,
> = {
readonly id: string;
readonly name: string;
readonly coinType: number;
readonly curve: 'secp256k1' | 'ed25519' | 'bls12-381';
readonly defaultPath: DerivationPath;
readonly supports: AssetCapabilities;
create: (signer: TSigner, options?: TOptions) => TAdapter;
utils: Record<string, unknown>;
};
24 changes: 24 additions & 0 deletions packages/assets/asset-core/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": true,
"declarationMap": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"lib": ["ES2022", "DOM"],
"module": "ES2022",
"moduleResolution": "Bundler",
"outDir": "./dist",
"resolveJsonModule": true,
"rootDir": "./src",
"skipDefaultLibCheck": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true,
"target": "ES2022",
"types": ["node"]
},
"exclude": ["node_modules"],
"include": ["src"]
}
8 changes: 8 additions & 0 deletions packages/assets/btc/biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"extends": ["../../biome.json"],
"files": {
"include": ["src/**/*.ts"],
"ignore": ["**/dist/**", "**/node_modules/**"]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@
"repository": {
"type": "git",
"url": "https://github.com/GridPlus/gridplus-sdk.git",
"directory": "packages/btc"
"directory": "packages/assets/btc"
},
"dependencies": {
"@gridplus/asset-core": "workspace:*",
"bs58check": "^4.0.0"
},
"devDependencies": {
Expand Down
Loading
Loading