on 1b43863 help sign in
bridge/src/lib/utils/proxy.ts
49 lines 1.4 kB history raw
1import { Ownership, Proxy } from '@urbit/roller-api';
3const isManagementProxy = (owner: Ownership, address: string) =>
4 owner.managementProxy?.address === address;
6const isTransferProxy = (owner: Ownership, address: string) =>
7 owner.transferProxy?.address === address;
9const isSpawnProxy = (owner: Ownership, address: string) =>
10 owner.spawnProxy?.address === address;
12const isOwnerProxy = (owner: Ownership, address: string) =>
13 owner.owner?.address === address;
15export const getSpawnProxy = (owner: Ownership, address: string) =>
16 isOwnerProxy(owner, address)
17 ? 'own'
18 : isSpawnProxy(owner, address)
19 ? 'spawn'
20 : undefined;
22export const getManagerProxy = (owner: Ownership, address: string) =>
23 isOwnerProxy(owner, address)
24 ? 'own'
25 : isManagementProxy(owner, address)
26 ? 'manage'
27 : undefined;
29export const getAddressProxy = (
30 owner: Ownership,
31 address: string,
32 proxyType: Proxy
33) =>
34 isOwnerProxy(owner, address)
35 ? 'own'
36 : proxyType === 'manage' && isManagementProxy(owner, address)
37 ? 'manage'
38 : proxyType === 'spawn' && isSpawnProxy(owner, address)
39 ? 'spawn'
40 : proxyType === 'transfer' && isTransferProxy(owner, address)
41 ? 'transfer'
42 : undefined;
44export const getTransferProxy = (owner: Ownership, address: string) =>
45 isOwnerProxy(owner, address)
46 ? 'own'
47 : isTransferProxy(owner, address)
48 ? 'transfer'
49 : undefined;